字符串读入总结
1. 每次读入一个字符并进行操作
AcWing 3358
放养但没有完全放养
char ch;
cin.get(ch);
//当前输入字符为'\n'跳出
while(ch != '\n'){
int pos = ch - 'a';
alphabet[pos] = idx ++ ;
cin.get(ch);
}
- 当前输入字符为EOF时跳出
while(!cin.fail()){
int pos = ch - 'a';
// cout << "pos: " << pos <<endl;
alphabet[pos] = idx ++ ;
cin.get(ch);
}
2. 持续输入–分割带空格字符串(每次读一个单词)
while(cin>>a)
的调用,这里并不是cin
的返回值,而是>>
操作重载函数istream& operator>>(istream&, T &);
的返回值,其中第二个参数由cin>>
后续参数类型决定。
其返回值类型为istream&
类型,大多数情况下其返回值为cin本身(非0值),只有当遇到EOF输入时,返回值为0。
string a;
while(cin >> a){
cout << a <<endl;
cout << "---" <<endl;
}