所以我试图检查我输入到程序中的参数,其中之一是单词“yes”或“no”,输入时不带引号。
我正在尝试测试等效性( if (argv[n] == "yes") ),但是每次输入实际上都是肯定的(当我输出它时,它证实了这一点) )。我在这里错过了什么,我做错了什么? 如果我理解正确 argv[n] 返回一个以 null 结尾的 cstring,那么它应该允许我这样做。
最佳答案
您正在比较指针。使用 strcmp 或 std::string。
int main(int argc, char * argv[]) {
if (argv[1] == "yes"); // Wrong, compares two pointers
if (strcmp(argv[1], "yes") == 0); // This compares what the pointers point to
if (std::string(argv[1]) == "yes"); // Works fine
if (argv[1] == std::string("yes")); // Works fine
// Easy-mode
std::vector<std::string> args(argv, argv+argc);
for (size_t i = 1; i < args.size(); ++i) {
if (args[i] == "yes") {
// do something
}
}
}
关于c++ - 根据字符串检查 argv[]? (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5183203/