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

std::getline() returning memory address when using cout

本文关键字:返回 地址 cout 内存 使用 getline Std      更新时间:2023-10-16

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

为什么会发生这种情况?

getline函数本身从给定的第一个参数返回输入流(代码中的fileI)。结果保存在第二个参数中(代码中的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;

参见getline

的文档

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