【问题标题】:My if statement with char comparison isn't working, any ideas? [duplicate]我的带有字符比较的 if 语句不起作用,有什么想法吗? [复制]
【发布时间】:2015-02-06 18:46:17
【问题描述】:

这是我的代码

char un [50] = "Username";
char pw [50]=  "Password";
char unapp[50];
char pwapp[50];

cout << "Username: ";
cin >> unapp;
system("CLS");
cout << "Username: ";
cout <<  unapp <<endl;
cout << "Password: ";
cin >> pwapp;
system ("pause");

if (unapp == un)
{
          cout <<"Gz" <<endl;
          system ("pause");
          }

cout << unapp <<endl;
cout << un <<endl;

system ("pause");

return 0;

由于某种原因,它没有运行if 语句,即使在那之后我打印了unappun 以查看它们是否相同并且确实它们是但仍然没有?但是,如果我使用ints,它会起作用。

【问题讨论】:

  • 或者,更好的是,使用std::string
  • 您正在使用 C 字符串。 == 运算符对 C 字符串没有任何特殊作用,就像您不能使用它来比较原始整数数组一样。使用strncmp

标签: c++ if-statement string-comparison


【解决方案1】:

要比较你的两个char*,你应该使用strcmp

if (strcmp (unapp ,un) != 0) {}

另一种选择是使用std::string

【讨论】:

  • 你能给我一个例子,说明如何使用我的代码来使用它吗?
  • 我用一个例子更新了我的答案
【解决方案2】:

由于数组衰减为指针,您所做的是比较指针,而不是数组的内容。

您实际上要做的是比较这些指针指向的缓冲区(或字符串)。为此,只需使用 Jerome L 解释的 strcmp,或者只是实现一个循环,遍历数组的所有元素并进行比较,直到找到 '\0' 终止符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    • 2021-07-27
    • 1970-01-01
    相关资源
    最近更新 更多