我有一个像这样的文本文件:
1 2 3
4
5 6 7 8
just with money we can live
2 5
使用这段代码,我可以在屏幕上完整显示它,但是不能将其放在字符串中,并且其编译会产生错误:
string test ="";
string line2;
freopen("a.txt", "rb", stdin);
while(getline(cin, line2)) {
cout << line2 << endl;
line2 >> test;
}
1-是否可以将整个文本文件放入“测试”中?
2-而不是使用像这样的东西:
string test =
"1 2 3"
"4"
"5 6 7 8"
"just with money we can live"
"2 5";
是否可以使用循环和freopen或类似的东西?
我读了这个“ Read file line by line using ifstream in C++”,但它表示列数相同。
如果有一个网站可以回答我的问题,请给我。
答案 0 :(得分:0)
让我们看看这个片段:
string test ="";
string line2;
freopen("a.txt", "rb", stdin);
while(getline(cin, line2)) {
cout << line2 << endl;
}
这里发生的是,您将文本文件(不是完全准确的术语)重定向到标准输入流(此处由cin
对象表示),并逐行阅读线。然后,在读取每一行之后,使用cout
对象将其打印到标准输出流中。
将文件读入字符串所需要做的事情大致如下:
string test ="";
string line2;
freopen("a.txt", "rb", stdin);
while(getline(cin, line2)) {
test += line2 + "\n";
}
在这里,您只需向test
添加行。请注意,您还需要添加换行符,因为getline
会将它们删除。
答案 1 :(得分:0)
将文件内容放入std::string
很简单:
std::string test{std::istreambuf_iterator<char>{std::ifstream{"a.txt"}.rdbuf()},
std::istreambuf_iterator<char>{}};