Max*_*xpm 2 c++ pointers stringstream implicit-conversion
"Bar"
以下代码不是输出预期的字符串,而是输出看起来像指针的内容.
#include <sstream>
#include <iostream>
int main()
{
std::stringstream Foo("Bar");
std::cout << Foo << std::endl; // Outputs "0x22fe80."
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这可以通过使用来解决Foo.str()
,但它在过去给我带来了一些问题.是什么导致这种奇怪的行为 它在哪里记录?
这可以通过使用Foo.str()来解决,但它在过去给我带来了一些问题.是什么导致这种奇怪的行为 它在哪里记录?
这一点都不奇怪.
流是流,而不是字符串.
您可以使用成员函数获取[string]缓冲区.str()
.这不是一种解决方法:它是API.它应该记录在您的C++标准库引用中,如果不是,那么您的引用是不完整/错误的.
(什么是有点奇怪的是,你得到一个内存地址,而不是编译错误;这是由于使用的安全布尔成语在前期的C++ 0x标准库,覆盖另一个答案.)