题目:编写一个小程序,由用户输入两个 string 对象,然后报告哪个 string 对象按字母排列次序而言比较小(也就是说,哪个的字典序靠前)。继续要求用户输入,直到用户请求退出为止。请使用 string 类型、string 类型的小于操作符以及 do while 循环实现。
Mycoding:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str1, str2, str3;
do
{
cout << "Enter two strings: " << endl;
cin.get(); //必须得要,用来回收换行符。否则会getline()函数遇到第一个字符是换行符的话,会停止读入
getline(cin, str1);
getline(cin, str2);
cout << "The \"" << (str1<str2?str1:str2) << "\" is less than \"" << (str1<str2?str2:str1) << "\" !!!" <<endl;
cout << "Continue?(Y-yes, N-NO)" << endl;
cin >> str3;
}
while(str3[0] == 'y' || str3[0] == 'Y');
return 0;
}
易错点:getline函数并不忽略行开头的换行符。只要getline遇到换行符,及时它是输入的第一个字符,getline也将停止读入并返回。如果第一个字符就是换行符,则string参数将被置为空string。