【问题标题】:C++ << no operator foundC++ << 未找到运算符
【发布时间】: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 是属性。我已经初始化了。
  • 它们不是属性,它们是局部变量。这段代码毫无意义。

标签: c++ string visual-studio operator-keyword stringstream


【解决方案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。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。
    猜你喜欢
    • 1970-01-01
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-07
    • 2017-12-08
    • 1970-01-01
    相关资源
    最近更新 更多