String类型从'space'获取用户输入

时间:2012-05-15 17:13:57

标签: c++ string whitespace

我正在尝试获取一个字符串处理程序,它在字符串类型变量中从用户获取输入...但它崩溃了,我想知道为什么?或者我做错了什么......

 string UIconsole::getString(){
    string input;
    getline(cin,input);
    if(input.empty() == false){
        return input;
    }
    else{getString();}
    return 0;
}

编辑: 错误:

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
terminate called after throwing an instance of 'std::logic_error'
  what():  basic_string::_S_construct null not valid

1 个答案:

答案 0 :(得分:7)

您有几个错误,但邮件引用的具体错误是:

return 0;

您无法从空指针构造std::string。如果您想要一个空字符串,请尝试以下其中一个结构:

return "";
return std::string();

<小时/> 您的另一个错误是对getString()的递归调用。你在那里尝试做什么并不清楚。也许这样做你想要的:

// untested
std::string UIconsole::getString(){
    std::string input;
    while(std::getline(std::cin, input) && input.empty()) {
        // nothing
    }
    return input;
}