我正在尝试编写一个程序,使用C ++将输入转换为二进制形式。但是我对do-while循环部分有一些问题,它继续翻译每个额外的输入。 do-while循环的条件混乱,因此输出变为无限循环。
do{
cin>>number;
if (number<0)
cout<< number<< " (base 10) is not a positive integer"<<endl;
else if (number==0)
cout<< number<< " (base 10) = 0 (base 2) ";
else {
binary= binaryConverter(number);
cout<< number << " (base 10) =";
cout<< binary << " (base 2)";
}
cout<< endl;
}while(????);
答案 0 :(得分:3)
这将循环直到收到终止信号(如CTRL-C),然后流终止
while(cin >> number)
答案 1 :(得分:0)
规范的C ++输入循环如下所示:
ItemType item;
while ( input_stream >> item ) {
// Do something with item, for example:
// std::cout << item; or,
// container.push_back(item); or,
// sum += item; or whatever.
}
这种循环每个输入项只运行一次,将在文件结束处停止(无论是磁盘文件的末尾还是从控制台发出的EOF信号)。一旦输入不再符合项目的格式,它也将停止(例如,如果ItemType
为int
并且输入中包含字母Q.)
具体来说,应该从不使用.eof()
或.good()
作为循环条件。我们几乎不应该使用do-while
作为输入循环。
在您的情况下,循环应如下所示:
while(std::cin >> number) {
std::cin>>number;
if (number<0)
std::cout<< number<< " (base 10) is not a positive integer";
else if (number==0)
std::cout<< number<< " (base 10) = 0 (base 2) ";
else {
binary= binaryConverter(number);
std::cout<< number << " (base 10) =";
std::cout<< binary << " (base 2)";
}
std::cout<< "\n";
}
P.S。我修改了您的代码,以符合其他两个广泛采用的标准:永远不要说using namespace std;
,如果您的意思是std::endl
,就不要说'\n'
。