std :: getline()在使用cout时返回内存地址

时间:2016-10-09 09:05:15

标签: c++ c++11

当cout语句执行时,它返回一个内存地址。

string data = "Test String ";
string info;
ofstream file("data.dat", ios::binary);
ifstream fileI("data.dat", ios::binary);
file << data;
file.close();
cout << getline(fileI, data); // returns a memory address

为什么会这样?

2 个答案:

答案 0 :(得分:4)

getline函数本身从给定的第一个参数(代码中的fileI)返回输入流。结果保存在第2个参数中(代码中为data)。因此,您需要先运行getline(fileI, data),然后输出字符串data

string data = "Test String ";
string info;
ofstream file("data.dat", ios::binary);
ifstream fileI("data.dat", ios::binary);
file << data;
file.close();
getline(fileI, data);
cout << data;
return 0;

另见documentation of getline

答案 1 :(得分:1)

std :: getline返回对输入流的引用。流不能直接发送到另一个流,但可以转换为void指针(直到c ++ 11)。