【发布时间】:2021-06-11 12:52:13
【问题描述】:
您好,我正在解决 Stanley 的 C++ Primer 一书的问题。问题是:-
编写一个程序,一次读取标准输入一行。修改您的程序以一次读取一个单词。
我使用了选择变量,用户可以通过该变量切换到所需的输出,即打印一行还是一个单词。线路输出正确。但是,输出这个词并不正确。因为,我想在空格之前打印单词。但即使在空格之后,它也会打印整个句子。
代码如下:-
#include<iostream>
using namespace std;
int main(){
char select;
string line,word;
cout<<"please enter w(word) or l(line)";
cin>>select;
if(select=='l'){
/* program to read one line at a time */
while(getline(cin,line)){
cout<<line;
}
}
else if(select=='w'){
/*program to read one word at a time */
while(cin>>word){
cout<<word;
}
}
else {
cerr<<"you have entered wrong input!"<<endl;
return -1;
}
return 0;
}
我希望它只打印 shubharthak,因为我只使用 cout 它不应包含空格,并且仅在空格之前打印字符。如果不是这种情况,那么为什么当我编译以下程序时它会打印单个单词:-
#include<iostream>
using namespace std;
int main(){
string s;
cin >> s;
cout << s;
return 0;
}
【问题讨论】:
-
它正在打印整个句子,因为您告诉它打印使用
while语句读取的所有内容。 -
我该如何解决?我希望它像在第二个程序中打印一样打印一个单词
-
把
while改成if,这样输入输出只执行一次。 -
也就是说,修改您的程序以一次读取一个单词。 表明您确实需要
while循环。否则,说明会更像修改程序以读取单词。 -
@user4581301 是的,我也是这么想的,据说采用标准输入,这可能意味着它应该输入直到 EOF。因此,如果我错了,也应该强制使用 while 循环来原谅我。那么,你知道我如何使用 while 循环并且仍然可以获得所需的输出,即选择 w 时只有一个单词而不是句子