1

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

 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
4

1 回答 1

7

您有几个错误,但消息所指的具体错误是:

return 0;

您不能std::string从空指针构造 a 。如果您想要一个空字符串,请尝试以下构造之一:

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


您的另一个错误是对getString(). 目前还不清楚您要在那里做什么。也许这可以满足您的要求:

// untested
std::string UIconsole::getString(){
    std::string input;
    while(std::getline(std::cin, input) && input.empty()) {
        // nothing
    }
    return input;
}
于 2012-05-15T17:22:33.847 回答