c++ - C++ 中的无休止循环,比较两个字符

标签 c++ loops c++11 while-loop char

我有这个:

#include <iostream>
#include <conio.h>

int main ()
{
     char str1[] = "abc123";
     char str2[] = "abc123";
     do
     {
          std::cout << "String: ";
          std::cin >> str2;
     } while (str1 != str2);
     std::cout << "str1 is equal to str2, press any key to quit.\n";
     _getch();
     return 0;
}

当 str1 等于 str2 时,程序应该结束,str2 是用户设置的值。问题是,即使我输入与 str1 相同的值,它也会一直循环,无论我是否输入与 str1 相同的内容都没有关系。

最佳答案

您没有正确比较两个字符串,您正在比较两个字符数组的地址。

你必须使用 strcmp 函数。

while(strcmp(str1,str2)!=0)

或者使用 std::string 类,它允许您使用重载运算符 == 来比较字符串。

关于c++ - C++ 中的无休止循环,比较两个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20440510/

相关文章:

c++ - wxGrid 在用户编辑单元格后显示旧值而不是新值

php - 如何在 jQuery 上循环遍历这个 JSON 数组?

c++ - 三元运算符并通过常量引用延长临时对象的生命周期

c++11 - 因式分解 Eigen3 临时值以提高计算速度

c# - VB 中的多重赋值,就像在 C 风格语言中一样

c++ - 使用 Visual C++ Express 10 链接到 boost::python

C++ - 可变参数函数的多个参数包

java - 我怎样才能接近这台自动售货机?

c++ - 调车场处理括号表达式

c++ - 什么是声明和声明符?标准如何解释它们的类型?