Std::getline()使用cout时返回内存地址
std::getline() returning memory address when using cout
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)。
相关文章:
- 返回地址上的WriteProcessMemory
- 在字符串函数的指针中返回地址
- 英特尔 Pin:如何获取系统调用的返回地址
- 如何使用C 给出的地址覆盖汇编器堆栈的返回地址
- 指针不起作用,返回地址不是值
- Linux x64堆栈在信号处理程序内部展开,以修改返回地址
- 如何在函数中获取函数返回地址
- CPP - 使用 * 或 & 返回地址
- 我真的返回地址或参考临时吗?
- 从缓冲区指针计算堆栈中的返回地址
- 堆栈上的线程返回地址是什么
- 运算符 new[] 的返回地址与数组的实际地址之间的差异
- 这些本地函数的返回地址之间有什么区别
- 同时返回地址和值的函数
- 从std::vector::operator[]获取返回地址做什么
- 在返回地址之前清空指针
- 如何找出在 c++ 中更改函数返回地址的原因
- 局部变量的返回地址和程序仍然有效
- 返回地址在C
- 当操作符地址可以设置为普通变量时,为什么要求从函数返回地址?