写在前面
字符串是我们经常要处理的东西,今天在处理方面比如读入处理等方面做一个小小的总结。
读字符串之前
如果读字符串之前有读入数的操作,那么需要把其后的换行符给读入消去,即可。
整行读入字符串的方式
1 2 3 4 5 6 7 8 9
| string s; getline(cin,s);
char s[100]; scanf("%[^\n]%*c",s); gets(s); cin.get(s,100); cin.getline(s,100);
|
整行读入原理解释
是很有趣的参数,意义是读入一个字符集合,一旦遇到不在集合中的就停止,同时遇到^后面的字符也会停止,所以^\n就是遇到换行符停止,后面的%*c是为了把换行符读入,防止影响接下来的读入。
cin.get()和cin.getline()之区别
两者都是只支持字符数组。
我们知道读入时存在缓冲区这一说法,比如,在键盘输入结束后,将数据存入缓冲区m函数直接从缓冲区读取数据,所以如果缓冲区有残留数据,会直接读取。
问题的关键在于,()在一次输入结束后不会删除缓冲区的结束符,而()会自动丢弃缓冲区字符。
1 2 3
| cin.get(数组名,长度,结束符); cin.getline(数组名,长度,结束符);
|
如果要用读入多组数据,需要写成 。