- C++
关于getline函数和get函数以及为什么无法先cin再getline
- 2024-8-11 16:43:35 @
经过我的一番实验 我得出了以下结论:
int a;
cin >> a;
string m;
getline(cin,m);
cout << a;
cout << m;
return 0;
以上代码执行后 只能输入变量a 而字符串m却无法输入 我也不知道为啥 反正最后只会输出a m却不翼而飞(我试过给m赋值 但是并没有输出m 就挺诡异的)
int a;
cin >> a;
printf("\n");//此处有改动
string m;
getline(cin,m);
cout << a;
cout << m;
return 0;
我记得我上课时教的就是这个方法 但是恕我直言 这个方法屁用没有 换行是换了 但是输出与上一段代码一模一样
因此我上B站查了一下 写出了以下代码:
int a;
cin >> a;
cin.get();//此处有改动
string m;
getline(cin,m);
cout << a;
cout << m;
return 0;
上述代码中的cin.get()不填参数时就是起到一个\n的效果 让你输入完a后可以换行再输入m(但是在控制台里并不会有\n的效果)
说到底get函数和getline函数其实是差不多的 只不过get函数自带\n
然而这两个函数在B站上的记录有一点少 所以我目前只能把get函数当作\n getline当作cin 其他用处我还不知道 也欢迎徐聪明等老师前来补充 点评 指正
4 comments
-
蔡徐坤 LV 9 MOD @ 2024-8-12 17:23:48👍 1❤️ 1
-
2024-8-11 19:59:27@
破案了 课上只说了\n 不是叫我printf("\n") 而是
cin.ignore(numeric_limits<streamsize>::max(),'\n');
这行代码好像是把缓冲池中的换行符去掉的意思 (如果要用上面代码必须调用limits库 这么长一串 感觉还不如cin.get() )
-
2024-8-11 16:57:30@
getline函数与get函数都是在iostream库里的 可以放心使用
-
2024-8-11 16:55:32@
希望能对语言三的同学们有一定帮助
- 1