按下ENTER后,程序没有输出任何结果。为什么会这样?

时间:2016-02-02 04:18:19

标签: c++

我是C ++的新手。我在网上看到了这个代码。按下ENTER后,程序没有输出任何结果。为什么会这样?有人可以帮帮我吗?提前感谢您的帮助!

int main(){
    const string hexdigits = "0123456789ABCDEF";
    cout << "enter a series of numbers between 0 and 15 separated by spaces. Hit ENTER when finished: " 
            << endl;
    string result;
    string::size_type n;
    while(cin >> n){
        if(n < hexdigits.size()){
            result += hexdigits[n];
        }
    }
    cout << "your hex number is: " << result << endl;
}

我已输入输入:

12 0 5 15 8 15

1 个答案:

答案 0 :(得分:2)

您的输入循环将继续读取整数,直到输入流关闭或遇到无法解析为整数的内容。每个值由任何空格分隔,其中包括换行符

如果您想为输入的每个输出新内容,可以使用std::getline首先阅读字符行,然后从std::istringstream读取:

string line;
while( getline( cin, line ) )
{
    istringstream iss( line );

    string result;
    string::size_type n;
    while(iss >> n){
        if(n < hexdigits.size()){
            result += hexdigits[n];
        }
    }
    cout << "your hex number is: " << result << endl;
}