c++ - 没有参数的 cin.get() 做什么?
问题描述
cin.get()
没有参数传递时怎么办?
如果没有第二次cin.get
调用(第 13 行),我的代码将不起作用:
#include <iostream>
#include <conio.h>
#include <cstring>
#include <cstdlib>
#include <string>
using namespace std;
int main() {
char s[3][10];
for (int i=0; i <= 2; i++)
{
cin.get(s[i], 9);
cin.get();
}
cout << s[1];
getch();
}
解决方案
该函数cin.get()
从 istream 读取一个字符cin
。你可以考虑一些情况。
案例1.没有cin.get()
for(int i=0;i<=2;i++)
{
cin.get(s[i],9);
}
如果您在没有换行符的情况下键入所有三个字符串s[0]
,s[1]
和,这将起作用。s[2]
123456789123456789123456789
这将导致s[0] = s[1] = s[2] = "123456789"
案例 2. 与cin.get()
该代码将再读取一个字符以读取换行符'\n'
。但如果输入超过 9 个字符但少于 27 个字符(案例 1),它可能会失败。cin.get()
将读取一个额外的字符并将其留'\n'
在下一个s[i]
导致 cin 错误中。
案例 3. 建议方法
for(int i=0;i<=2;i++)
{
cin.get(s[i],9);
cin.ignore(65536,'\n');
}
您可以忽略之前的所有字符,而不是读取一个额外的字符'\n'
。这是为上述情况保存的。
推荐阅读
- c# - C# 将泛型表单作为参数传递
- javascript - 将文件对象转换为对象数组
- laravel - laravel 7 php artisan route:缓存不起作用
- python - 将编码字符串发送到服务器时出现 Python 错误
- python - 将视频数据从一个 python 脚本传递到另一个
- tableau-api - 有没有办法在 Tableau Desktop 或 Tableau Prep 中创建日历查找表
- django - Django_tables2 类定义中的条件语句
- scala - 阐明 Scala 中的跨版本行为
- reactjs - 我在使用 react-native-geolocation-service 时得到 [TypeError: null is not an object (evalating 'RNFusedLocation.getCurrentPosition')]
- c# - 如何从 c# 中的“System.Collections.Generic.List`1[Microsoft.Online.Administration.UserLicense]”对象解析或提取数据