为什么价值不匹配?

Afz*_*han 0 c++

我有一个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").

有什么指导吗?

Jos*_*eld 6

command而字符串文字"save"都是chars的数组.它们都被转换为指向第一个元素的指针(这称为数组到指针的转换),并且您正在比较这些指针.所以你真正在做的command == "save"是检查他们的第一个字符是否具有相同的地址.

相反,要比较你想要的C风格字符串(检查字符串中的所有字符是否相同),你需要使用std::strcmp.但是,C++中更优选的解决方案是创建command一个std::string而不是一个数组char.std::string支持使用比较==.