C/C++如何整行读入字符串
在写代码的过程中,经常要一行一行的读入字符串进行处理,经常不知道选用哪个,这里我做点小总结,作为自己的学习笔记也供大家参考。
方法一:gets()读入char[]
使用方法:
gets(str);
说明:这个就是多个getchar的集合函数,很好用。功能是从标准输入键盘上读入一个完整的行(从标准输入读,一直读到遇到换行符),把读到的内容存入括号中指定的字符数组里,并用空字符'\0'取代行尾的换行符'\n'。读入时不需要考虑换行符。
方法二:getline()读入string或char[]
使用方法:
getline(cin,str);//读入string
char str2[10086];
cin.getline(str2,10086);//读入char数组
说明:这是比较常用的方法,cin.getline第三个参数表示间隔符,默认为换行符'\n'。读入不需要考虑最后的换行符。
方法三:get()读入char[]
使用方法:
cin.get(str3,10086);//读入char数组
说明:get函数读入时需要考虑最后的换行符,也就是说,如果用get读入多行数据,要把'\n'另外读出来,一般使用“cin.get(str,1024).get();”来读入多组数据。
方法四:scanf()读入char[]
使用方法:
scanf("%[^\n]",&str);
getchar();
说明:这里主要介绍一个参数,%[ ],这个参数的意义是读入一个字符集合。[ ]是个集合的标志,因此%[ ]特指读入此集合所限定的那些字符,比如%[A-Z]是输入大写字母,一旦遇到不在此集合的字符便停止。如果集合的第一个字符是"^",这说明读取不在"^"后面集合的字符,既遇到"^"后面集合的字符便停止。注意此时读入的字符串是可以含有空格的,而且会把开头的空格也读进来。
注意:如果要循环的多次从屏幕上读取一行的话,就要在读取一行后,在用%c读取一个字符,将输入缓冲区中的换行符给读出来。否则的话,在下一次读取一行的时候,第一个就遇到'\n',匹配不成功就直接返回了。这里可以用scanf()或者getchar()函数读取换行符。