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

标签 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;
        }
    }
}

最佳答案

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

关于c++ - 简单问题:为什么字符串库函数std::string::find总是返回std::string::npos?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6389401/

相关文章:

c++ - 使用 std::map 时内存增长

c++ - if 中的多个语句是否与多个 if 相同?

c++ - 如何避免此代码中的堆栈溢出,(递归函数)

C++ std::queue 不想 push()

c++ - Qt 屏幕分辨率启动画面

c++ - 可移植地编译整个目录

c++ - 如何找到错误 : *** Error in `./a.out' : free(): invalid next size (fast): 0x09767150 ***

c++ - String 到 char * 特殊字符的转换

c++ - 为什么 c++ 中的分配器为 void 类型提供专门化

c++ - 初始化指向 var 的简单指针与指向指向 var 的指针的引用