You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++结构体存储的同内容char*字符串相等判断返回false原因求解

原因说明

你遇到的问题本质是char*类型的比较规则问题:直接对char*使用==/!=运算符,比较的是指针存储的内存地址值,而非指针指向的字符串内容。

  • 打印suffixes[12].suff和suffixes[13].suff都输出'T',仅能证明两个指针指向的内存地址中存储的首字符为'T',不能证明两个指针本身的地址值相等,也不能证明两个指针指向的完整字符串内容完全一致。
  • 只要两个char*指向不同的内存地址,哪怕地址中存储的字符串内容完全相同,直接比较指针的结果也会是不相等。

解决方案

C风格字符串比较

使用标准库的strcmp函数做内容比较:
当strcmp(a, b)返回值为0时,代表两个C风格字符串内容完全一致,对应你的判断逻辑应该改写为:

if (strcmp(suffixes[12].suff, suffixes[13].suff) != 0) {
    // 内容不相等时的逻辑
    cout << "ok";
}

C++更推荐的写法

直接用std::string类型存储后缀字符串,std::string重载了==/!=运算符,可以直接比较内容,同时也能避免C风格字符串常见的内存泄漏、野指针、越界等问题。


内容的提问来源于stack exchange,提问作者myk137

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 07:42:04