gpt4 book ai didi

C++比较char数组和字符串

转载 作者:IT老高 更新时间:2023-10-28 12:32:51 24 4
gpt4 key购买 nike

我正在尝试将字符数组与这样的字符串进行比较:

const char *var1 = " ";
var1 = getenv("myEnvVar");

if(var1 == "dev")
{
// do stuff
}

这个 if 语句永远不会验证为真......当我输出 var1 它是“dev”时,我在想它可能与一个以 null 结尾的字符串有关,但是“dev”的 strlen 和 var1 是相等的。 ..我还认为 var1 == "dev"可能是在将 "dev"与 var1 的内存位置而不是值进行比较。 *var1 == "dev"导致错误....尝试了很多方法,对于精明的 c++ 开发人员来说可能是一个简单的解决方案(我很久没有编写 c++ 代码了)。

编辑:我们已经尝试过

if(strcmp(var1, "dev") == 0)

if(strncmp(var1, "dev", 3) == 0)

谢谢

编辑:在家测试后,我只是建议我的同事将数据类型更改为字符串。我相信他正在将一个大尺寸的 char 数组与一个字符串进行比较。我编写了一个输出 sizeof、strlen 等的程序来帮助我们完成它。感谢大家的帮助。

最佳答案

使用 strcmp()比较字符串的内容:

if (strcmp(var1, "dev") == 0) {
}

解释:在 C 语言中,字符串是指向包含字节的内存位置的指针。使用相等运算符将 char*char* 进行比较不会按预期工作,因为您正在比较字符串的 内存位置而不是它们的字节内容。 strcmp() 之类的函数将遍历两个字符串,检查它们的字节是否相等。 strcmp() 如果它们相等则返回 0,如果它们不同则返回非零值。更多详情,请参阅 manpage .

关于C++比较char数组和字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1330550/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com