我有以下代码:
std::ifstream report( fileToRead );
cout << "leyendo archivo: " << fileToRead << endl;
std::string line;
cout << std::getline(report,line) << endl;
report.close();
但是cout给出了以下结果:0x28fe64我该怎么办?
答案 0 :(得分:4)
基于此参考,http://www.cplusplus.com/reference/string/string/getline/。
getline
函数返回对ifstream
对象的引用,这就是您打印地址的原因。
您需要cout << line;
才能打印出阅读的内容。
我也没有重复你的bug,你正在使用哪个版本的g ++和OS?我的g ++如下:
配置: --prefix = / Applications / Xcode.app / Contents / Developer / usr --with-gxx-include-dir = / usr / include / c ++ / 4.2.1 Apple LLVM 6.1.0版(clang-602.0.53)(基于LLVM 3.6.0svn)目标: x86_64-apple-darwin14.3.0线程模型:posix
#include <fstream>
#include <iostream>
using namespace std;
int main(int argc, char * argv[]){
char * fileToRead= "a.txt";
std::ifstream report( fileToRead );
cout << report << endl;
cout << "leyendo archivo: " << fileToRead << endl;
std::string line;
cout << std::getline(report,line) << endl;
cout << std::getline(report,line) << endl;
cout << std::getline(report,line) << endl;
cout << std::getline(report,line) << endl;
cout << std::getline(report,line) << endl;
cout << std::getline(report,line) << endl;
report.close();
}
我得到的结果是:
1
leyendo archivo: a.txt
1
1
1
0
0
0
似乎ifstream被转换为boolean变量,指示ifstream是否存在任何文件操作错误。最后的三个零是由于没有更多的线要读。