【发布时间】:2021-12-06 08:15:09
【问题描述】:
我正在尝试将字符数组与这样的字符串进行比较:
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 等的程序来帮助我们完成它。感谢大家的帮助。
【问题讨论】:
-
看起来您使用的是原始 C 字符串,而不是 C++ String 类。
-
尝试使用调试器查看 var1 是否实际填充了“dev1”。此外,如果 var1 实际上是 C++ 样式字符串,请使用 c_str() 函数获取可以使用 strcmp() 与您的 char* 进行比较的 c 样式字符串;
-
你试过 strcmp;太好了——结果如何? (因为这是一个好方法)
标签: c++ string string-comparison