我有一个 C++ 控制台应用程序代码,它会查找条件,然后将文本保存到 (.txt) 文件。
但是这里没有应用条件。我的情况是这样的:
char command[100];
cin >> command;
if (command == "save") {
fstream file;
file.open("C:\\Users\\AfzaalAhmad\\Documents\\text.txt");
file << "Data you provided was as saved!";
cout << "File Saved!";
}
else {
cout << "Ummm, sir I think there is an error!\n" <<
"The command you entered was: " << command;
}
我正在做的是检查用户提供的命令,如果命令是“保存”
if(command == "save")
然后将数据保存到文件中,当我使用此代码时,文件中存在数据:
if(command != "save")
因为命令不必保存,所以代码会执行并为我提供文档文件夹中文件中的数据。
但是,如果执行 else
block ,我仍然可以在末尾看到正确的命令“保存”,正如您在代码块中看到的那样,代码显示了这一点。
你可以看到,我使用了正确的命令,但它不是作为 if(command == "save")
执行的,但是如果我使用这段代码 if(命令!=“保存”)
。
有什么指导吗?
最佳答案
command
和字符串文字 "save"
都是 char
数组。它们都被转换为指向第一个元素的指针(这称为数组到指针的转换)并且您正在比较这些指针。所以你真正用 command == "save"
做的是检查它们的第一个字符是否有相同的地址。
相反,要按需要比较 C 风格的字符串(检查字符串中的所有字符是否相同),您需要使用 std::strcmp
.然而,在 C++ 中更可取的解决方案是使 command
成为 std::string
,而不是 char
数组。 std::string
支持使用 ==
进行比较。
关于c++ - 为什么值(value)不匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21514021/