1

我正在尝试编写一个使用 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(????);
4

2 回答 2

3

这将循环直到接收到终止信号(如 CTRL-C),然后终止流

while(cin >> number)
于 2012-04-19T19:24:50.470 回答
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 信号)。一旦输入不再符合项目的格式(例如,如果ItemTypeint并且输入中包含字母 Q),它也会停止。

具体来说,永远不应该使用.eof()or.good()作为循环条件。几乎不应该使用 ado-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";
}

Ps 我修改了你的代码以符合另外两个被广泛采用的标准:永远using namespace std;不要说,std::endl当你的意思是永远不要说'\n'.

于 2012-04-19T19:34:46.303 回答