C ++:警告:与字符串文字比较导致未指定的行为[-Waddress]

时间:2016-04-26 08:43:36

标签: c++

我开始学习/使用C ++,Ruby背景。

有人可以帮我解决下面的代码吗?

我不知道出了什么问题,但它导致了这条错误消息:

  

C ++:警告:与字符串文字的比较结果未指定   行为[-Waddress]

void OnUserConnect(LocalUser* user)
{
    if (user->MyClass->name.c_str() == "user") {
        ServerInstance->SNO->WriteToSnoMask('a', "Triggered: %s", user->MyClass->name.c_str());
    }
}

2 个答案:

答案 0 :(得分:3)

您的比较user->MyClass->name.c_str() == "user"会比较两个指针,以及两个永远不会相同的指针。

由于您似乎正在使用std::string,因此可以直接使用等式comparison operator而无需获取指针:

if (user->MyClass->name == "user") { ... }

如果 由于某种奇怪的原因,您希望使用C风格的字符串指针进行比较,则必须使用std::strcmp

答案 1 :(得分:0)

您无法比较$('#container').highcharts ({ chart: { type: 'pie', options3d: { enabled: true, alpha: 45, beta: 0 } }, title: { text: 'Browser market shares at a specific website, 2014' }, tooltip: { pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>' }, plotOptions: { pie: { allowPointSelect: true, cursor: 'pointer', depth: 35, dataLabels: { enabled: true, format: '{point.name}' } } }, series: [{ type: 'pie', name: 'Browser share', data: [ {name:'Firefox', y:45}, {name:'Firefox123', y:10} ] }] }); 变量和char*字面值。如果要使用此比较,则必须使用const char*函数。您可以将以下条件替换为您的

strcmp