首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

输入流cin与getline解决方法

2012-04-12 
输入流cin与getline#include iostreamusing namespace stdint main(){char ch[20]int icoutenter

输入流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;} 

热点排行