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::stringnull ポインターから 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 に答える