gpt4 book ai didi

c++ - getline() 只读第二个字(错误)

转载 作者:行者123 更新时间:2023-11-28 02:24:16 25 4
gpt4 key购买 nike

我正在尝试制作一个读取名称并将其打印出来的程序。我想使用 getline 以便它读取整行,因此名称中可以包含任意数量的单词。 (这就是为什么我不想只使用 cin 两次。)但它只打印第二个词。有什么问题吗?

输入:Rock Lee

输出:

#include <iostream>
#include <iomanip>
#include <string>

using namespace std;

int main () {

string name;

cout << "Enter your name: ";
cout.flush();
cin >> name;

getline(cin, name, '\n');


if (name == "")
{
cout << "Name is blank.";
return -1;
}

cout << name;

return 0;
}

最佳答案

cin >> name;

从输入流中读取“Rock”并将其保存在name 中。流现在包含“Lee\n”。现在

getline(cin, name, '\n');

从流中读取剩余的“Lee\n”,丢弃\n,然后用结果覆盖namename 现在包含“Lee”。

要将整行读入 name,请删除“窃取”第一个单词的 cin 行。

顺便说一句,cout.flush(); 不是必需的,因为 coutcin 默认是绑定(bind)的,即 cout当控制到达 cin 时, 将始终被刷新。

关于c++ - getline() 只读第二个字(错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31256211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com