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 << name.str() << "hat" << punkte.str() << "Punkte" << '\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 .. 那是英文名称和点,它们已经初始化。我正在努力成为这个输出“玩家std::cout << "Gamer " << name.str() << " hat " << punkte.str() << " Points." << std::endl;
嗨@emaem116,如果这个或任何答案解决了您的问题,请点击复选标记考虑accepting it。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。以上是关于C++ << 未找到运算符的主要内容,如果未能解决你的问题,请参考以下文章
错误:二进制“<<”:未找到采用“std::string”类型的右侧操作数的运算符 [重复]