上述是书中的示例程序:
1、第一个问题 cin函数
以下是我写的程序:
遇到的错误:在混合输入的时候,会发现,
但是由于之前输入字符串,在执行到cin >> age的时候 无法输入,会直接跳过这段代码。
例如:
明明有输入的语句,但是却无法执行?
错误原因:
cin使用空白(空格、制表符和换行符)来确认字符串的结束位置
cin函数在输入的时候 一遇到空格就会认为输入已经结束,输入流会自动的将空格后的内容填入到下个个cin函数所要写的变量中。
解决办法:将cin函数替换成cin.getline()或者是cin.get函数,两者均可读取一整行程序。
2、第二个问题 cin.getline()函数
此时,我将cin函数换成cin.getline()函数
错误原因:
cin >> f_name 为什么?
第1个 cin 函数 输入流 在键盘输入的时候,输入流最后会将换行符留在输入流末尾。
在第2个cin函数 输入流的时候,会直接将第1个cin函数的末尾的换行符直接输入。
解决办法:将cin 换成 cin.getline()
详解cin 函数 与 cin.getline()函数和cin.get函数
1、cin用法
2、cin.getline()用法
cin.getline()
用法:接收一个字符串,可以接收空格并输出
延伸:
1、cin.getline()实际上有三个参数,cin.getline(接收字符串的变量,接收字符个数,结束字符)
2、当第三个参数省略时,系统默认为'\0'
3、getline()用法
getline()
用法:接收一个字符串,可以接收空格并输出
注意:
1、cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数
2、当同时使用cin>>,getline()时,需要注意的是,在cin>>输入流完成之后,getline()之前,需要通过
-
str="\n";
-
getline(cin,str);
的方式将回车符作为输入流cin以清除缓存,如果不这样做的话,在控制台上就不会出现getline()的输入提示,而直接跳过,因为程序默认地将之前的变量作为输入流