getline(cin, STRING) 正在读取 space
getline(cin, STRING) is reading a space
我有一个函数,它应该非常简单地读取一行文本,但出于某种原因,它只读取 space。我尝试将 readline 更改为 cin >> 行,这奏效了。但是 readline(cin, string) 没有。
void AddRestaurant() {
string restToAdd;
cout << "What is the name of the restaurant you want to add?" << endl;
getline(cin, restToAdd);
restuarants.push_back(restToAdd);
cout << restToAdd + " has been added" << endl << endl;
}
有人看到我的错误吗?
那是不是错误。看来你之前做了一个cin>>
的操作。 cin>>
仅从流 中获取 字符串并留下 \n
,getline()
可能会拾取它,如您所知,它的 默认分隔符是\n
,所以它只是跳过输入。
解决方案--->在每个getline ()
操作之前使用cin.ignore()
来清除任何杂散的输入流\n
.
您的电话可以是:
std::cin.ignore ();
std::getline (cin, restToAdd);
而不是:
std::getline (cin,restToAdd);
我有一个函数,它应该非常简单地读取一行文本,但出于某种原因,它只读取 space。我尝试将 readline 更改为 cin >> 行,这奏效了。但是 readline(cin, string) 没有。
void AddRestaurant() {
string restToAdd;
cout << "What is the name of the restaurant you want to add?" << endl;
getline(cin, restToAdd);
restuarants.push_back(restToAdd);
cout << restToAdd + " has been added" << endl << endl;
}
有人看到我的错误吗?
那是不是错误。看来你之前做了一个cin>>
的操作。 cin>>
仅从流 中获取 字符串并留下 \n
,getline()
可能会拾取它,如您所知,它的 默认分隔符是\n
,所以它只是跳过输入。
解决方案--->在每个getline ()
操作之前使用cin.ignore()
来清除任何杂散的输入流\n
.
您的电话可以是:
std::cin.ignore ();
std::getline (cin, restToAdd);
而不是:
std::getline (cin,restToAdd);