今天下午,又双叒叕遇到了对字符串的处理的题,这种题对字符的输入要求很严格,本人写到自闭。。。。。。
字符串的输入
1.cin
以空格 制表符 以及 回车符结束
无法吸收空格 制表符 回车符
输入结束后缓冲区会有一个空格或回车符
2.scanf
格式输入,以空格 制表符 回车符结束
可以吸收空格 制表符 回车,但不能将这些复制给变量(%c除外)
输入结束后缓冲区会有一个空格或回车符
3.gets
读入一行,包括空格 制表符,以回车符结束
输入结束后缓冲区没有一个空格或回车符
4.getline
读入一行,包括空格 制表符,以回车符结束
输入结束后缓冲区没有一个空格或回车符
和gets几乎没有区别,但gets比较危险,现在被停用(我也不知道为啥)用法:getline(cin,s)
有些文章的用法并非如此,但我比较喜欢这个
5.getchar
从缓冲区吸收一个字符(前面反复提到的缓冲区问题均可由次解决),可以吸收任何字符(包括空格 制表符 回车符)通常放在scanf 和cin,getline后面吸收缓冲区的空格及回车符,防止影响下一个字符的输入
特殊用法:for(i=0;(str[i]=getchar())!=‘\n’;i++)
读入一行数据,存入str中
6.#include <sstream>
getline ( cin , str )
stringstream sin(str);
string t;
while(sin>>t){
//此时str内的字符串会被空格隔开依次输入给t
}
字符串的输出
1.cout
2.printf
不能输出string类
3.puts
puts的输出十分简单,输出一行字符串,将最后的‘\0’当做’\n’处理,换行
puts也不能输出string类
当然,针对字符串的输入输出问题还有一堆,目前接触比较多的是这些,暂时也只能想到这些,如果下次又遇到陌生的,会继续补上。
以后这种问题,必拿下!!!