【发布时间】:2014-06-22 17:32:29
【问题描述】:
当我不确定在 getline 之前是否会得到一个 cin 时,如何去掉前导的 ' ' 和 '\n' 符号?
例子:
int a;
char s[1001];
if(rand() == 1){
cin >> a;
}
cin.getline(s);
如果我在 getline 之前放一个 cin.ignore() ,我可能会丢失字符串的第一个符号,所以我唯一的选择是在每次使用 'cin >>' 之后放置它吗?因为当你在做一个大项目时,这不是很有效的方法。
还有比这更好的方法吗:
int a;
string s;
if(rand() == 1){
cin >> a;
}
do getline(cin, s); while(s == "");
【问题讨论】:
-
在没有看到您的确切输入的情况下不确定,但这可能有助于stackoverflow.com/questions/23047052/…
-
不要混用
>>和getline。始终使用getline。就目前而言,您的代码无论如何都被破坏了,因为您不检查cin >> a是否成功。