gpt4 book ai didi

c++ - 将文件中的数据读入字符串

转载 作者:行者123 更新时间:2023-11-27 22:37:05 25 4
gpt4 key购买 nike

我正在尝试读取文件并将数据放入字符串中。然而,编译器正在输出这个。

012  
345
678
����012345678

与新线。你能解释一下发生了什么吗?

#include <iostream>

using namespace std;
#include <fstream>
#include <cstring>
int main() {
ofstream output("transform.out");
ifstream input("transform.in");
int num = 0;
input >> num;
char tmp[num+1];
char data[num * num +1];
while(input >> tmp){
cout << tmp << '\n';
strcat(data, tmp);
}
cout << data;
}

transform.in 有这个数据

3
012
345
678

最佳答案

请注意,标准 C++ 不支持像 char data[num * num +1] 这样的可变长度数组(num 不是 constexpr)。您的代码可以编译,因为您可能使用带有支持 VLA 扩展的编译器。但是,对于可移植代码,您需要使用一些动态数据结构,例如一个 vector

无论如何,您没有初始化data,这样您的第一个strcat 可能会将tmp 的(有效)内容附加到data 以垃圾开头的。您的输出 ���� 不是换行符的结果,而只是第一个 strcat 附加文件内容的垃圾。

char data[num * num +1] = { 0 }; 应该可以解决这个问题。

关于c++ - 将文件中的数据读入字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52910690/

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