C++ << 未找到运算符

Posted

技术标签:

【中文标题】C++ << 未找到运算符【英文标题】:C++ << no operator found 【发布时间】:2018-06-13 20:00:02 【问题描述】:
string toString() 

    std::stringstream punkte;
    std::stringstream name;
    std::cout << name << "hat" << punkte << "Punkte" << '\n'
    return 0;

  

在这行代码。我收到错误 C++

 std::cout << name << "hat" << punkte << "Punkte" << '\n';

我也在我的代码中包含了这个:

#include <string>       // std::string
#include <iostream>     // std::cout
#include <sstream>      // std::stringstream, std::stringbuf
#include <fstream>

【问题讨论】:

我想你的意思是:std::cout &lt;&lt; name.str() &lt;&lt; "hat" &lt;&lt; punkte.str() &lt;&lt; "Punkte" &lt;&lt; '\n'; 你能添加你的错误信息吗? 还有return 0; - 零不是字符串。您正在尝试从空指针创建字符串。 @DimChtz 不,name 和 punkte 是属性。我已经初始化了。 它们不是属性,它们是局部变量。这段代码毫无意义。 【参考方案1】:

没有将 std::stringstream 格式化为 std::ostream 的 operator

【讨论】:

【参考方案2】:

您正在尝试使用字符串流参数调用运算符“

std::cout << name;

相当于:

std::cout.operator<<(name);

而且那个 operator

我认为你想要做的是为每个字符串流分配它们的值,然后打印两者,不是吗?

string toString() 

    std::stringstream punkte;
    std::stringstream name;
    name << "hat";
    punkte << "Punkte";
    std::cout << name.str() << punkte.str() << std::endl;
    return name.str();

注意返回值,记住 std::stringstream 不是 std::string。如果要检索流中的std:string,则必须调用str() 方法。

【讨论】:

谢谢,但这并不是我想要做的。 name 和 punkte .. 那是英文名称和点,它们已经初始化。我正在努力成为这个输出“玩家 hat Points”。 不要在函数体内再次声明它们,它们会隐藏你的属性。要打印出该字符串,请尝试:std::cout &lt;&lt; "Gamer " &lt;&lt; name.str() &lt;&lt; " hat " &lt;&lt; punkte.str() &lt;&lt; " Points." &lt;&lt; std::endl; 嗨@emaem116,如果这个或任何答案解决了您的问题,请点击复选标记考虑accepting it。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。

以上是关于C++ << 未找到运算符的主要内容,如果未能解决你的问题,请参考以下文章

错误:二进制“<<”:未找到采用“std::string”类型的右侧操作数的运算符 [重复]

未找到前进箭头运算符

错误 C2679:二进制“<<”:未找到采用“std::string”类型右侧操作数的运算符(或没有可接受的转换)

在 C++ 的模板中使用运算符

逗号运算符如何与 C++ 中的 cout 一起使用?

C++ Primer 5th笔记(chap 17 标准库特殊设施)未格式化的输入/输出操作