读书人

输入流cin与getline解决方法

发布时间: 2012-04-12 15:46:35 作者: rapoo

输入流cin与getline
#include <iostream>
using namespace std;
int main()
{char ch[20];
int i;
cout<<"enter a sentence:"<<endl;
cin>>ch;
cout<<"The string read with cin is:"<<ch<<endl;

cin.getline(ch,20,'/');
cout<<"The second part is:"<<ch<<endl;

cin.getline(ch,20);
cout<<"The third part is:"<<ch<<endl;
return 0;
}

输入:I like C++./I study C++./I am happy.回车。
输出为:
The string read with cin is:I
The second part is:like C++.
The third part is:I study C++./I am h

请问:
1.究竟是怎么存入“I like C++./I study C++./I am happy.”
2.cin与getline又是怎么取数据的
3.ch[]在程序中的各个状态是怎样的

[解决办法]
1.cin>>ch是肯定不行的,他遇到空格、tab键、回车就会结束读入,所以第一个打印才是"I"
2.cin.getline(ch,20,'/');//读入到'/'为止,不过最多只能读20个字符

[解决办法]
3.cin.getline(ch,20);//这个就是纯粹的从输入流中读入20个字符为止了,不管是空格还是回车之类的所以,你想读入“I like C++./I study C++./I am happy.”,ch要够大,参数也要足够大
[解决办法]
别看谭浩强了,看C++ primer吧。虽然老谭写的书已经是中国人里基本最好的了,但是还是跟primer有差距。
[解决办法]

探讨

1.cin>>ch是肯定不行的,他遇到空格、tab键、回车就会结束读入,所以第一个打印才是"I"
2.cin.getline(ch,20,'/');//读入到'/'为止,不过最多只能读20个字符

[解决办法]
输入单个字符时是可以输入空格的,可以使用ctrl+z来结束循环,比如:

C/C++ code
#include <iostream>using namespace std;int main(){ char s[20]; char ch; cin >> noskipws; int i = 0; while(i < 20 - 1 &&cin >> ch) {   s[i++]=ch; }  s[i]='\0'; cout << s;return 0;} 

读书人网 >C++

热点推荐