怎么将 int array 转化成 string array

2017-03-10 06:51:01 +08:00
 gary907478

现在我已经可以读取文件内的数据储存到 int array 里。但是我想要转化成 string ,要怎么做才可以啊。 代码如下。

FILE *fp;
char *fileName;
int num[31000];
int i = 0;

//read data file
fileName = malloc(sizeof(char)*50);

printf("Enter data file name: \n");
scanf("%s", fileName);
fp = fopen(fileName, "r");

if(fp != NULL)
{
    while(!feof(fp))
    {
        i++;
        fscanf(fp, "%d", &num[i]);
    }
}
else
{
    printf("cannot open file\n");
}
2241 次点击
所在节点    C
12 条回复
Cbdy
2017-03-10 07:00:49 +08:00
算一下 int 多大,然后在堆里直接开一个二维 char 数组得了
hocking
2017-03-10 07:33:51 +08:00
如果你的数据本来就是字符,可以直接以文本的形式读
binux
2017-03-10 07:39:12 +08:00
我怎么看不懂 LZ 在说什么,什么叫「 int array 转化成 string array 」,你想怎么「转化」?
cs202
2017-03-10 07:43:23 +08:00
简单地搜索了一下,找到了这个: http://stackoverflow.com/questions/5223066/converting-int-to-string-in-c

string int_array_to_string(int int_array[], int size_of_array) {
string returnstring = "";
for (int temp = 0; temp < size_of_array; temp++)
returnstring += itoa(int_array[temp]);
return returnstring;
}

OR

string int_array_to_string(int int_array[], int size_of_array) {
ostringstream oss("");
for (int temp = 0; temp < size_of_array; temp++)
oss << int_array[temp];
return oss.str();
}
wevsty
2017-03-10 08:24:14 +08:00
4 楼正解
C++推荐使用 strstream 来解决问题。
debiann
2017-03-10 08:34:54 +08:00
有现成的 itoa atoi
zhidian
2017-03-10 09:02:23 +08:00
用 std::copy 啊,核心代码:

std::ostringstream oss;
std::copy( intArray, intArray+length, std::ostream_iterator<int>(oss, ", ") );

代码: http://coliru.stacked-crooked.com/a/acdd0bb927e1d8f8
gary907478
2017-03-10 09:15:30 +08:00
补充一下,这个用的是 c 语言,转化问题解决了,但是现在是个新问题就是数据里边有 0 开头的整数读取后 0 就消失了,不知道为什么。例如文档里是 000123 ,读取后打印出来就变成了 123.
gary907478
2017-03-10 09:16:23 +08:00
@cs202 感谢回复,可是我用的不是 C++而是 C 语言。
gary907478
2017-03-10 09:16:50 +08:00
@zhidian 感谢回复,我是用 C 的
zhidian
2017-03-10 09:24:08 +08:00
@gary907478 好吧……我想你需要的是 2 楼的答案。
gary907478
2017-03-10 09:31:36 +08:00
@hocking 数据全都是数字 2381293 3281903 这样的,每个数据中间有空格分割。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/346310

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX