gpt4 book ai didi

c++ - cout <<字符串流

转载 作者:IT老高 更新时间:2023-10-28 21:54:19 27 4
gpt4 key购买 nike

当我将某些东西放入字符串流时,假设是一个实数,如果我随后将该字符串流对象插入 cout...我在看什么?

通常我会收到一些奇怪的数字。这是一个内存位置吗?只是好奇。

看起来下面的评论很成功,但这是我想要做的:

string stringIn; 
stringstream holdBuff;
holdBuff << getline(cin, stringIn);
cout << holdBuff;

基本上,我只是想看看插入 stringIn 后的 holdBuff 是什么样子。我试图让用户输入一个字符串,然后我想逐步通过它寻找它的内容并可能转换......

最佳答案

你怎么看

holdBuff << getline(cin, stringIn);

正在做。 getline 的返回类型是对流的引用在这种情况下被读取( cin )。由于没有<<定义了哪个需要 std::istream作为第二个参数,编译器尝试不同转换:在 C++11 中,std::istream隐式转换为 bool ,在早期的 C++ 中,隐式转换为 std::ios* , 或者类似的东西(但返回值的唯一有效用途是将其转换为 bool )。所以你要么输出 1 (C++11),或一些随机地址(实际上,通常是流的地址,但这不保证)。如果你想得到调用的结果 getline进入 std::ostringstream ,你需要两个操作(用检查它们之间的错误):

if ( !getline( std::cin, stringIn ) )
// Error handling here...
holdBuff << stringIn;

类似地,写入 std::ostringstream 的内容,

std::cout << holdBuf.str() ;

是正确的解决方案。如果您坚持使用 std::stringstream当一个 std::ostringstream会更合适,你也可以这样做:

std::cout << holdBuf.rdbuf();

然而,第一种解决方案更可取,因为它更惯用。

无论如何,再一次,没有<<接受任何 iostream类型,所以你最终得到隐式的结果转换为 bool或指针。

关于c++ - cout <<字符串流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8816817/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com