C++中string的输入,cin和getline的区别
之前做算法题时,都是只编写一个函数,不需要自己输入数据,今天做华为的机试题,计算字符串最后一个单词的长度,单词以空格隔开,定义了一个string作为输入,提交时一直显示结果不正确,然后用VS的调试功能,发现输入到程序中的字符串并不完全是从键盘中输入的字符串,例如键盘输入:abc def,实际上字符串中只保存了abc,因为当string遇到空格或者回车,输入就终止了,空格或者回车的字符串并没有被保存。
string和getline的区别:
string类基本的输入函数有如下三个:
1)istream& operator>>(istream&,string&); //cin遇到空格或者回车就终止
2)istream& getline(istream&,string&); //getline()函数遇到回车才终止
3)istream& getline(istream&,string&,char);
string str;
cin>>str;
getline(cin,str);
针对本题,如果使用cin读入一行字符串,遇到空格就终止,空格后的字符串没有被读入到输入,所以应该使用getline()函数,完整的读入一行字符串。