我有一个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;
}
Run Code Online (Sandbox Code Playgroud)
我正在做的是,检查用户提供的命令,如果命令是'save'
if(command == "save")
Run Code Online (Sandbox Code Playgroud)
然后将数据保存到文件中,当我使用此代码时,在文件中存在数据:
if(command != "save")
Run Code Online (Sandbox Code Playgroud)
因为命令不必保存,代码执行并向我提供文档文件夹中的文件中的数据.
但是,如果else块被执行,我仍然可以在末尾看到正确的命令'save',正如您在代码块中看到的那样,代码显示了该命令.

你可以看到那里,我正在使用正确的命令,但它没有执行,if(command == "save")但如果我使用此代码它会执行if(command != "save").
有什么指导吗?
command而字符串文字"save"都是chars的数组.它们都被转换为指向第一个元素的指针(这称为数组到指针的转换),并且您正在比较这些指针.所以你真正在做的command == "save"是检查他们的第一个字符是否具有相同的地址.
相反,要比较你想要的C风格字符串(检查字符串中的所有字符是否相同),你需要使用std::strcmp.但是,C++中更优选的解决方案是创建command一个std::string而不是一个数组char.std::string支持使用比较==.