【问题标题】:No match for ‘operator<<’ in std与 std 中的“运算符<<”不匹配
【发布时间】:2019-12-14 18:05:54
【问题描述】:

我刚开始学习 C++,这个测试似乎是个好主意,所以我尝试了它,似乎没有用,而且(对我来说)这真的没有意义。

#include <iostream>

using namespace std;

int myNum = 5;               // Integer (whole number without decimals)
double myFloatNum = 5.32543;    // Floating point number (with decimals)
char myLetter = 'H';         // Character
string myText = "test text: test";     // String (text)
bool myBoolean = true;            // Boolean (true or false)

int main() {

    cout << myNum << endl;
    cin >> myNum >> endl;

    cout << myFloatNum << endl;
    cin >> myFloatNum >> endl;

    cout << myLetter << endl;
    cin >> myLetter >> endl;

    cout << myText << endl;
    cin >> myText >> endl;

    cout << myBoolean << endl;
    cin >> myBoolean >> endl;

    return 0;

}

【问题讨论】:

  • 您不能将cin 转为endlcin 是从中获取数据的流,但 endl 是结束行的东西。
  • 那么我是否只是重写代码,在 cin 代码行上没有“
  • 是的,也看看你的答案。
  • @arsdever 你能看看我的回答吗?我想我已经解决了 OP 的问题,方法是在要求输入时删除 endl,并添加 string 标头..

标签: c++ cin endl


【解决方案1】:

你忘了include &lt;string&gt;,字符串不是基本的 C++ 数据类型;在 iostream 后使用#include &lt;string&gt;,大于号和小于号后面不要有空格。

【讨论】:

  • @JadenGarcia 这不会解决 OP 的问题,您的答案是正确的但不完整。我在我的answer 中发布了另一半。 :)
  • @gsamaras 他的编译器告诉他问题出在&lt;&lt; 运算符上,他还没有到达cin &gt;&gt; endl,所以我只告诉他什么是必要的。另外,@arsdever 已经提到了,那我为什么还要再说一遍呢?
  • 嗨@JadenGarcia,感谢您为 OP 指出这一点。确实,有评论提到了 OP 代码的核心问题,但 cmets 不是答案。一般来说,为了未来的读者,我们喜欢收集完整的信息以解决问题中的问题,形成紧凑而可靠的答案。我希望这对你有意义,并且请记住,这只是一个建议,而不是我想对你指指点点的东西(对不起,如果有那样的感觉,我真的不想这样做)。 :)
【解决方案2】:

cin 放入endl 确实有意义。 cin 是一个从中获取数据的流,但endl 是一个结束行的东西,正如@arsdever 评论的那样。

只需删除它,您的代码就会编译:

#include <iostream>
#include <string>    // You forgot to include that header, for using std::string
using namespace std;

int myNum = 5;
double myFloatNum = 5.32543;
char myLetter = 'H';
string myText = "test text: test";
bool myBoolean = true;

int main() {

    cout << myNum << endl;
    cin >> myNum;

    cout << myFloatNum << endl;
    cin >> myFloatNum;

    cout << myLetter << endl;
    cin >> myLetter;

    cout << myText << endl;
    cin >> myText;

    cout << myBoolean << endl;
    cin >> myBoolean;

    return 0;
}

虽然,您可能希望先阅读用户的输入,然后然后打印它。现在,您打印由您预定义的变量值(然后打印行尾),然后从用户那里读取该特定变量的输入。

【讨论】:

  • 我已经这样做了,它仍然只将“5”输出到 cmd,作为代码的结果。也感谢澄清一些我不知道的事情。
  • 嗨@Luka,您是否尝试完全运行我的代码?我非常怀疑你只看到了 5 个印刷品。也可以在在线编译器中查看(答案已更新)。
  • 嗨@gsamaras 我确实尝试过,是的,它确实为我输出了 5 到 cmd :(
  • 嗯,这很奇怪。您在在线演示中看到输出已完成,对吗@Luka?
  • 完成了,感谢您花时间向我解释,真是个老师!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-15
  • 2016-03-18
  • 2017-06-17
  • 1970-01-01
  • 2012-03-12
相关资源
最近更新 更多