gpt4 book ai didi

c++ - int 到字符串,char* itoa

转载 作者:行者123 更新时间:2023-11-28 00:58:02 25 4
gpt4 key购买 nike

尝试让‘sval’包含数组索引 0-499 的字符串“$1”-“$500”。在下面的代码中,但是 itoa 在下面的代码中给了我奇怪的字符串:

    #include<iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;


typedef struct data_t {
int ival;
char *sval;
} data_t;

void f1(data_t **d);
int main()
{
data_t *d;

d=static_cast<data_t*>(malloc(500)); //is this even needed?
d = new data_t[500];
f1(&d);
}

/* code for function f1 to fill in array begins */
void f1(data_t **d)
{
int i;
char str[5];
for (int i=0; i<500; i++)
{
(*d)[i].ival=i+1;
itoa (i,str,10);
(*d)[i].sval= str;
}
}

itoa 似乎也被折旧了,但这是我用 google 搜索 int to string 时得到的结果

最佳答案

你不需要ltoa , cout应该就好了。为什么需要将数字及其字符串表示形式保留在数组中?当你做 cout << 10您在输出中得到“10”,您不需要自己进行任何转换

另一方面,你做 ltoa没有为字符串分配任何内存,正如您可能已经注意到的那样,这是不健康的。您使用了一个局部变量(相同,对于所有 500 个数组成员),您在退出函数后尝试访问它 - 一个很大的禁忌,它的未定义行为。

和:

    d=static_cast<data_t*>(malloc(500));  //is this even needed?
d = new data_t[500];

没有。不仅不需要——根本不应该存在!在 C++ 中 - 使用 newdelete , 从不 malloc ,这是一个 C 函数。

关于c++ - int 到字符串,char* itoa,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10083830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com