C++ std:string与c-string的比较
我正在尝试验证一份报告中给出的答案。我对它们有一个问题,因为下面的代码显示std::string的内容与char[]的内容进行了有效比较,而不是那些答案所建议的指针 这是C++11的一个新特性吗?非常感谢您的帮助C++ std:string与c-string的比较,c++,string,C++,String,我正在尝试验证一份报告中给出的答案。我对它们有一个问题,因为下面的代码显示std::string的内容与char[]的内容进行了有效比较,而不是那些答案所建议的指针 这是C++11的一个新特性吗?非常感谢您的帮助 std::string smth = "hello"; char ch[8] = "hello"; if (ch == smth) cout << "yes!"; else cout << " no "; ch[2] = 'W'; if (c
std::string smth = "hello";
char ch[8] = "hello";
if (ch == smth)
cout << "yes!";
else
cout << " no ";
ch[2] = 'W';
if (ch == smth)
cout << "yes!";
else
cout << " no ";
ch[2] = 'l';
if (ch == smth)
cout << "yes!";
else
cout << " no ";
std::string smth=“hello”;
char ch[8]=“你好”;
如果(ch==smth)
coutstd::string的
因此,每次执行该行时:
if (ch == smth)
您不只是比较指针,而是调用类似的函数来比较字符串和指针的数据,如果它们相似,则返回true
因此,指针肯定不会改变,但它们的数据会改变。操作员的结果也是如此 std::string
确实有一个
因此,每次执行该行时:
if (ch == smth)
您不只是比较指针,而是调用类似的函数来比较字符串和指针的数据,如果它们相似,则返回true
因此,指针肯定不会改变,但它们的数据会改变。操作员的结果也是如此 您链接的问题是比较两个char*
类型的值。这里的区别在于char*
是指针,而string()
不是指针。比较指针时,它会检查指针是否相等,但由于string()
不是指针,它会转到其运算符==
,该运算符检查字符串内容本身是否相等 您链接的问题是比较两个char*
类型的值。这里的区别在于char*
是指针,而string()
不是指针。比较指针时,它会检查指针是否相等,但由于string()
不是指针,它会转到其运算符==
,该运算符检查字符串内容本身是否相等 < >比较<代码> STD::String 与 const char */COD>,并且结果是字符集的比较,在C++版本的每个版本中都指定。具体地说,运算符==()
和涉及std::string
作为至少一个操作数的其他比较运算符是标准的一部分
它不是任何版本的C的特性,因为std::string
不是C标准库的一部分。所以,C11的特点不是:< > /p > <比较<代码> STD::String > <代码> const char */COD>,并且结果是字符集的比较,在C++版本的每个版本中都指定。具体地说,运算符==()
和涉及std::string
作为至少一个操作数的其他比较运算符是标准的一部分
它不是任何版本的C的特性,因为std::string
不是C标准库的一部分。所以这不是C11的一个特性。dr可能指的是c++11。我只是回答了问题。这不是我第一次看到有人提出一个基于C++特定功能是C的一部分的假设的问题。想想有多少人相信他们在编写C代码,即使他们使用operatornew
。d r可能指的是C++11。我只是回答了这个问题。这不是我第一次看到有人基于C++特定功能是C的一部分的假设提出问题。想想有多少人相信他们正在编写C代码,即使他们使用operatornew
。