【发布时间】:2015-09-29 04:39:20
【问题描述】:
我需要编写一个程序来连续读取n 数字。例如,用户首先输入一个包含 2 个数字的列表,如下所示:
P n
我设法阅读了带有scanf 的那些,但现在我需要阅读n 后面的数字,这些数字连续给出如下。
1 6 3 99 ... n times
这些数字必须一次读完(或给人留下印象)。
我已经尝试过使用
while(getline(cin,str)){
// do something with str
}
正如this thread 中所解释的那样,但是当我按下 intro 键时,我需要 while 循环内的操作停止。在我目前的实现中,它们并没有停止,它只是一直在等待更多的行来阅读。
总结:
首先,用户必须能够输入两个数字(P 和 n)(完成!)然后按 Enter 并开始输入 n 数字列表(未完成!)。
这是我的代码。
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main(void){
int P,n;
scanf("%d %d",&P,&n);
string val;
int score[P];
int i;
for(i=0;i<P;i++){
score[i]=0;
}
while(getline(cin,val)){
printf("Val=%s\n",val.c_str());
stringstream stream(val);
int local;
while(stream >> local){
score[local]=score[local]+1;
printf("%d-%d\n",local,score[local]);
}
}
for(i=0;i<P;i++){
printf("%d-%d\n",i,score[i]);
}
return 0;
}
【问题讨论】:
-
是否需要明确退出阅读模式?
-
我不明白你在说什么,但我只需要最后打印分数数组。
-
用户输入 P n 并回车。然后他输入 1 2 3 4 5 并按下回车键。此时,您希望用户能够键入其他数字还是停止阅读?
-
@victor 我要停止阅读
-
对不起,我正在尝试理解您的问题,但我仍然感到困惑。 while(getline(...)) 将继续尝试读取行,直到您跳出循环。如果您只想读取一行,为什么要使用 while 循环?