我必须用我的名字来输入我的资源我该怎么做

时间:2017-08-15 20:41:35

标签: c++ console-input

cin<<名称<< ENDL; cout>> "我的名字是" <<名称<< ENDL;

1 个答案:

答案 0 :(得分:0)

<强>问题

当你说cin >> smth时,你想得到精确的smth,仅此而已。终点标记不是它的一部分,因此不会消耗它。除非你有一个特殊的行类型,但标准库中没有这样的东西。

当你使用getline时,你说你想要一条线。一行是以\n结尾的字符串,结尾是它的组成部分。

所以问题是std::cin在缓冲区中留下了一个结束行\n字符。

示例

std::cin >> smth;

+---+---+---+---+---+----+
|'H'|'e'|'l'|'l'|'o'|'\n'|      // In smth will be "Hello"
+---+---+---+---+---+----+

+----+
|'\n'|                          // But new-line character stays in buffer
+----+

std::cin >> smth2;              // Its same like you would press just an 'enter', so smth2 is empty

<强>解决方案

  • 使用std::cin.getline

  • 使用std::cin >> smth; + std::cin.ignore();