简单问题:为什么字符串库函数std :: string :: find总是返回std :: string :: npos?

时间:2011-06-17 17:23:41

标签: c++

请参阅下面的代码片段,特别是第一个'else if'语句。我希望用户能够这样做:

加载文件名

所以我想检查字符串中的“load”并尝试打开“load”之后的内容。但是,string :: npos似乎总是被返回(string :: npos只意味着没有位置)。

我可能做了一些愚蠢的事 - 这是基本的东西!

void Main::user_choice() {
    string choice;
    while(choice != "exit") {
        cout << "> ";
        cin >> choice;
        if(choice == "view") {
            Main::view_frameworks();
        }
        else if(choice.find("load ") != string::npos) {

        }
        else if(choice == "exit") {
            return;
        }
        else {
            cout << "Invalid command" << endl;
        }
    }
}

1 个答案:

答案 0 :(得分:6)

cin >> choice在第一个空格之前停止阅读。你想在这里getline(std::cin, choice)