【发布时间】:2017-02-21 19:51:36
【问题描述】:
我一直在尝试打印文件的内容,但是,它不会打印任何内容,它只会返回 0。我已经检查并仔细检查了我的代码,但找不到任何原因说明它为什么会失败'不工作。这是我的代码示例。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
ifstream infile("test.txt");
string line;
if(infile.is_open())
{
cout << infile.rdbuf();
}
else
{
cout << "error" << endl;
}
infile.close();
return 0;
}
【问题讨论】:
-
您从未触发将任何内容读入缓冲区?
-
我的文件与我的 main.cpp 位于同一文件夹中。我在我的 macbook 上使用 xcode。
-
@πάνταῥεῖ 实际上,为什么不原始代码工作?
std::cout是一个std::ostream,std::ostream::operator<<()有一个重载,带有指向流缓冲区的指针,这是dbuf()返回的内容。 -
我已经删除了我的答案。使用
cout << infile.rdbuf()应该读取文件。这是关于 Coliru 的一个工作示例(打印源文件,因为我不确定是否还有其他内容可供阅读):coliru.stacked-crooked.com/a/ea7ec2dc80016335