getline(cin,s1)没有提示我输入
getline(cin,s1) not prompting me for input
getline(cin,s1)函数不会提示我输入字符串。即使满足if条件,它看起来也像是被跳过了。有什么帮助吗?代码如下。问题出在第一个if语句中。
//练习3.2
#include "stdafx.h"
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main(){
char a1;
cout << "Read line (L) or word (W)?:";
cin >> a1;
if (a1 == 'l'){
string s1;
getline(cin, s1);
cout << s1 << endl;
}
else{
string s1;
while (cin >> s1){
cout << s1 << endl;
}
}
system("pause");
return 0;
}
当你这样做时:
cin >> some_char_variable;
它读取char
,并使输入流指针指向下一个字符,该字符始终是您输入的换行符。
如果您随后执行getline()
,它将获得该行,该行由您留在那里的输入流中的换行符所描绘。
这与在C中混合getchar()
和fgets()
的问题相同,两者的组合通常会让新来者感到困惑。
我倾向于避免混合这两种风格,例如在任何地方使用getline()
,例如使用:
string choice;
getline(cin, choice);
if (choice[0] == 'l') ...
但是,如果你必须将它们混合在一起,你可以在尝试接受更多数据之前清除这条线,比如:
cin.ignore(numeric_limits<streamsize>::max(), 'n');
相关文章:
- 如何使用递归循环我的代码(当用户输入无效输入时,它会再次提示他们)?
- 如何确保用户在一行上提示输入一次时输入名字和姓氏?
- 为什么 std::cin 不提示用户输入?
- 如何使用打印到 PDF 打印机在 MFC 和 CView 中以编程方式打印而不提示输入文件名?
- 编写一个程序,提示用户输入一个整数,然后输出数字的单个数字和数字的总和
- C++:跳过第一个用户输入提示
- (显示金字塔)编写一个程序,该程序提示用户输入1到15的整数并显示金字塔
- 循环不提示用户输入(C )
- C++ 编写一个程序,提示用户以数字形式输入一个人的出生日期(投掷/接球)
- 使用提示用户输入笛卡尔平面中某些点的x-y坐标(浮点类型)的函数
- 如何提示用户在C++中输入正确的电子邮件地址格式
- 输入有效的输入值后仍有提示
- 当提示输入整数值时输入字符时,为什么程序会中断
- 提示输入CreateFile的凭据
- >使用 RegCreateKeyEx() 的 Windows 可执行文件不会提示输入 UAC 管理员权限并失败?
- 防止提示输入 PEM 密码
- 如何在不提示输入密码的情况下设置计划任务
- 如何使用循环显示菜单并重新提示输入
- c++ shell命令提示输入密码
- 如何同时(!CIN >> x)) 用于重新提示输入