【发布时间】:2020-03-25 16:09:21
【问题描述】:
我正在尝试使用此代码将 0-15 之间的整数转换为十六进制:
#include <iostream>
#include <string>
using std::cout;
using std::cin;
using std::endl;
using std::string;
int main()
{
const string hexstring = "0123456789ABCDEF";
string str;
string::size_type n;
string result_str;
while (cin >> n){
if (n < hexstring.size()){
result_str += hexstring[n];
}
}
cout << result_str << endl;
return 0;
}
我想要的是当用户键入时:
12 13 14 15
然后按 ENTER,预期的输出应该是:
CDEF
但是,即使在按 ENTER 后,仍会提示用户输入。我的印象是 ENTER 不是 string::size_type 类型,因此违反了 while 循环条件,导致循环退出。为什么输入 ENTER 后条件仍然成立?
【问题讨论】:
-
\n是一个空格字符,>>跳过前导空格。您可能应该使用std::getline读取一行,然后使用std::istringstream或其他方式解析它。 -
@HolyBlackCat ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
标签: c++ while-loop infinite-loop