fstream读取文件内容为空,大伙,多谢
fstream读取文件内容为空,求助大伙,谢谢!
小弟写了一段代码读取文件demo.txt中的内容,文件中有一行,但打印的buffer内容为空,代码如下:
------解决思路----------------------
fstream src_file;
好像是应该用
ifstream src_file;
------解决思路----------------------
把cout那一行拿到循环里面
while (!src_file.eof())
{
src_file >> buffer;
cout << buffer << endl;
}
------解决思路----------------------
src_file >> buffer; 这个动作会用新读入的内容覆盖buffer原来的内容。
要读入整个文件,可以考虑再定义一个string line; 用getline每次读一行到line里面,在用buffer += line; 之类的把line加到buffer里面
------解决思路----------------------
读入整个文件还是使用istreambuf_iterator直接通过string的range构造函数一次构建出比较好,所有控制字符都可以保留而且效率高很多
------解决思路----------------------
每次读入都会覆盖buffer.
------解决思路----------------------
------解决思路----------------------
需要读整个文件的话拿string做buffer循环输入效率实在太低,直接使用ifstream的streambuf会快很多,而且代码简单
------解决思路----------------------
和你的一样,可以输出结果啊
小弟写了一段代码读取文件demo.txt中的内容,文件中有一行,但打印的buffer内容为空,代码如下:
int main()
{
fstream src_file;
string buffer;
src_file.open("demo.txt", std::ios_base::in);
while (!src_file.eof())
{
src_file >> buffer;
}
cout << buffer << endl;
src_file.close();
system("pause");
return 0;
}
------解决思路----------------------
fstream src_file;
好像是应该用
ifstream src_file;
------解决思路----------------------
把cout那一行拿到循环里面
while (!src_file.eof())
{
src_file >> buffer;
cout << buffer << endl;
}
------解决思路----------------------
src_file >> buffer; 这个动作会用新读入的内容覆盖buffer原来的内容。
要读入整个文件,可以考虑再定义一个string line; 用getline每次读一行到line里面,在用buffer += line; 之类的把line加到buffer里面
------解决思路----------------------
读入整个文件还是使用istreambuf_iterator直接通过string的range构造函数一次构建出比较好,所有控制字符都可以保留而且效率高很多
------解决思路----------------------
把cout那一行拿到循环里面
while (!src_file.eof())
{
src_file >> buffer;
cout << buffer << endl;
}
为什么要这样做呢?难道是每次读入都会将buffer清空么?那如果要读入整个文件的内容呢?
每次读入都会覆盖buffer.
------解决思路----------------------
ifstream src_file("demo.txt");
string buffer;
while(src_file >> buffer)
{
cout << buffer << endl;
}
------解决思路----------------------
ifstream file("demo.txt");
string text=string(istreambuf_iterator<char>(file),istreambuf_iterator<char>());
cout<<text;
需要读整个文件的话拿string做buffer循环输入效率实在太低,直接使用ifstream的streambuf会快很多,而且代码简单
------解决思路----------------------
using namespace std;
int main()
{
fstream src_file;
string buffer;
src_file.open("demo.txt", std::ios_base::in);
if(src_file.is_open())
{
while (!src_file.eof())
{
src_file >> buffer;
}
}
cout << buffer << endl;
src_file.close();
system("pause");
return 0;
}
和你的一样,可以输出结果啊