Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ std:string与c-string的比较_C++_String - Fatal编程技术网

C++ std:string与c-string的比较

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的内容与char[]的内容进行了有效比较,而不是那些答案所建议的指针

这是C++11的一个新特性吗?非常感谢您的帮助

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代码,即使他们使用operator
new
。d r可能指的是C++11。我只是回答了这个问题。这不是我第一次看到有人基于C++特定功能是C的一部分的假设提出问题。想想有多少人相信他们正在编写C代码,即使他们使用operator
new