C++ 如果'something'不为空且不"0.0.0.0"

C++ if 'something' isn't null AND isn't "0.0.0.0"

本文关键字:something 如果 C++      更新时间:2023-10-16

任何人都可以帮助我处理以下代码吗?

if(pAdapter->GatewayList.IpAddress.String != "" && pAdapter->GatewayList.IpAddress.String != "0.0.0.0");
      {
        printf("tGateway: t%sn", pAdapter->GatewayList.IpAddress.String);
      }

这是错误的吗?我是C 的新手。我想要的只是仅当pAdapter->GatewayList.IpAddress.String没有null而不是" 0.0.0.0"。

时才打印结果。

谢谢!

这里有几个潜在的问题。

  • null,aka 0,aka the" null Pointer"是不是与空字符串""相同的。根据更大的上下文,您可能需要检查一个或另一个或两者。
  • 比较c风格的字符串(更好地将其视为小整数的数组,通常但不一定是,与==!=相对应的代码点相对应)你期望的;它比较了数组的内存地址而不是其内容。C 中的"字符串文字"语法会产生这些数组的匿名实例。
  • c std::string对象更像是高级语言中的一流字符串对象,并将 ==!=应用于它们 do 比较其内容。并编写 str == "literal"等。 dos 将字符串的内容与文字内容进行比较。但是,这些对象不能直接传递给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%sn", 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("tGatewayt%sn", gw_name.c_str());

取决于pAdapter->GatewayList.IpAddress.String是C风格字符串还是std::string

我会写下以下方式

if ( !pAdapter->GatewayList.IpAddress.String.empty() &&  pAdapter->GatewayList.IpAddress.String != "0.0.0.0" );
      {
        printf("tGateway: t%sn", 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] != '' && strcmp( pAdapter->GatewayList.IpAddress.String, "0.0.0.0" ) != 0 )
      {
        printf("tGateway: t%sn", pAdapter->GatewayList.IpAddress.String );
      }

我以以下方式做到了

  if (stricmp(pAdapter->GatewayList.IpAddress.String, "0.0.0.0") != 0 )
  //if(pAdapter->GatewayList.IpAddress.String != "0.0.0.0");
  {
    printf("tGateway: t%sn", pAdapter->GatewayList.IpAddress.String);
  }

谢谢您的支持!

相关文章: