任何人都可以帮我解决下面的代码吗?
if(pAdapter->GatewayList.IpAddress.String != "" && pAdapter->GatewayList.IpAddress.String != "0.0.0.0");
{
printf("\tGateway: \t%s\n", pAdapter->GatewayList.IpAddress.String);
}
这是错的吗?我是C ++的新手。我想要的只是在pAdapter->GatewayList.IpAddress.String
不是NULL并且不是“0.0.0.0”的情况下打印结果。
谢谢!
答案 0 :(得分:8)
这里有几个潜在的问题。
""
相同。根据较大的上下文,您可能需要检查其中一个或两个。==
或!=
比较C风格的字符串(更好地考虑作为小整数数组,通常但不一定是与某些文本编码中的代码点对应的小整数)默默接受,但没有按你的意愿行事;它比较了数组的内存地址,而不是它们的内容。 " String literal" C ++中的语法生成这些数组的匿名实例。std::string
对象更像是高级语言中的第一类字符串对象,将==
或!=
应用于 比较它们内容。并撰写str == "literal"
等does compare the contents of the string to the contents of the literal。但是,这些对象无法直接传递给printf
。您还没有告诉我们您拥有哪两个(或者是否是其他内容,例如特定于应用程序的字符串类)所以我只是推测,但您可能要么
char const *gw_name = pAdapter->GatewayList.IpAddress.String;
if (gw_name // checks for NULL - remove if impossible
&& *gw_name // idiomatic shorthand check for "" - remove if impossible
&& strcmp(gw_name, "0.0.0.0")) // strcmp returns 0 if equal,
// 1 or -1 if unequal
printf("\tGateway:\t%s\n", gw_name);
或
std::string const &gw_name = pAdapter->GatewayList.IpAddress.String;
// gw_name cannot be NULL in this case
if (!gw_name.empty() && gw_name != "0.0.0.0")
printf("\tGateway\t%s\n", gw_name.c_str());
取决于pAdapter->GatewayList.IpAddress.String
是C风格的字符串还是std::string
。
答案 1 :(得分:1)
我会写下面的方式
if ( !pAdapter->GatewayList.IpAddress.String.empty() && pAdapter->GatewayList.IpAddress.String != "0.0.0.0" );
{
printf("\tGateway: \t%s\n", pAdapter->GatewayList.IpAddress.String.c_str() );
}
前提是pAdapter-> GatewayList.IpAddress.String的类型为std :: string。
否则,如果pAdapter-> GatewayList.IpAddress.String的类型为char []或char *,那么我会wriye
if ( pAdapter->GatewayList.IpAddress.String[0] != '\0' && strcmp( pAdapter->GatewayList.IpAddress.String, "0.0.0.0" ) != 0 )
{
printf("\tGateway: \t%s\n", pAdapter->GatewayList.IpAddress.String );
}
答案 2 :(得分:0)
我是按照以下方式做到的
if (stricmp(pAdapter->GatewayList.IpAddress.String, "0.0.0.0") != 0 )
//if(pAdapter->GatewayList.IpAddress.String != "0.0.0.0");
{
printf("\tGateway: \t%s\n", pAdapter->GatewayList.IpAddress.String);
}
感谢您的支持!!!