嗨,我正在解决 Stanely 所著《C++ Primer》一书中的一个问题。问题如下:-
编写程序读取两个字符串并报告 字符串是相等的。如果不是,请报告两者中哪个更大。现在,改变 程序报告字符串是否具有相同的长度,如果 不是,报告哪个更长。
我使用了一个变量选择来在程序之间切换,即是否检查字符串是否相等。或者检查字符串是否具有相同的长度。
#include<iostream>
using namespace std;
int main(){
char choice;
cout<<"Please enter choice"<<endl<<"For Larger press (L) and for longer press (l) "<<endl;
cin>>choice;
string s1, s2 ;
getline(cin,s1);
getline(cin,s2);
if(choice=='L'){
if(s1!=s2){
if(s1>s2) {
cout << "string which is larger is : " <<s1<<endl;
}
else{
cout<<"string which is larger is : " <<s2<<endl;
}
}
else{
cout<<"Both strings are equal "<<endl ;
}
}
else if (choice == 'l'){
if(s1.size() != s2.size()){
if(s2.size()> s1.size()){
cout<<"Longer string : "<<s2<<endl;
}
else {
cout<<"Longer string : " << s1<<endl;
}
}
else {
cout<<"Both strings have same length" <<endl;
}
}
else{
cerr<<"wrong input!! "<<endl;
return -1;
}
return 0;
}
但是当我编译程序时,它只接受字符串 s1 的输入,而不接受字符串 s2 的输入。
输出如下:-
答案 0 :(得分:-1)
显然使用 cin>>
从输入中遗漏了 '\n'
,它被第一个 getline()
吸收,正如@Scheff'sCat 所说,读取所有内容直到 '\n'
。这意味着第一个 getline()
立即退出并仅显示第二个。
您可以尝试使用 cin.ignore('\n')
。