C++ 比较const char*和strcmp
我将C++ 比较const char*和strcmp,c++,char,constants,strcmp,C++,Char,Constants,Strcmp,我将常量char*与字符串进行比较,由于某种原因,它总是成功的 if (std::strcmp(t->detectColor->name, "ghghjg") != 0) { printf("XXXXXXXXXXX\n"); // check if it was allready a sequencer if (std::strcmp(t->className, "IM_SURE_IT_CANT_BE_THIS") !=
常量char*
与字符串进行比较,由于某种原因,它总是成功的
if (std::strcmp(t->detectColor->name, "ghghjg") != 0) {
printf("XXXXXXXXXXX\n");
// check if it was allready a sequencer
if (std::strcmp(t->className, "IM_SURE_IT_CANT_BE_THIS") != 0) {
printf("what is going on?\n");
detectColor名称总是类似于绿色或蓝色,例如,t->className
是“OfxdTangableBase”。它还在打印吗
XXXXXXXXXXX
what is going on?
在控制台中。
如何获得有效的比较?根据:
返回一个整数值,该值指示
字符串:零值表示两个字符串相等。价值
大于零表示第一个不包含的字符
match在str1中的值大于在str2中的值;和一个小于
零表示相反
或者换个说法:
返回值
- 如果lhs小于rhs,则为负值
- 0 如果lhs等于rhs
- 如果lhs大于rhs,则为正值
strcmp(t->detectColor->name,“ghghjg”)
将返回与0不同的内容。因此,将打印“XXXXXXXXXX”
您只需更改:
if (std::strcmp(t->detectColor->name, "ghghjg") != 0)
到
其他比较也一样。
std::strcmp
在字符串相同时返回0,在字符串不同时返回小于0或大于0的值。因此,您可以将代码更改为以下内容:
if (std::strcmp(t->className, "IM_SURE_IT_CANT_BE_THIS") != 0) {
printf("indeed, strings are different\n");
如果lhs小于rhs,则为负值。
0 如果lhs等于rhs。
如果lhs大于rhs,则为正值
如何获得有效的比较?
if (std::strcmp(t->className, "IM_SURE_IT_CANT_BE_THIS") == 0) {
printf("strings are equal lexicographically\n");
使用更好的参考citations@piotruś:你是说这篇引文是错误的吗?在我看来,这很好,不过也许引用C标准比引用某个网站更好。@piotruś我已经添加了您的参考资料。我之所以使用cplusplus.com,是因为它们通常是谷歌上的第一个结果,并且能够完成这项工作。我只是想给出一个建议,cppreference是更好的来源,在这种情况下,当然是引用correct@clankill3r:在C++中,您将使用<代码> STD::String >并与
if (std::strcmp(t->className, "IM_SURE_IT_CANT_BE_THIS") == 0) {
printf("strings are equal lexicographically\n");