C++ 如果'something'不为空且不"0.0.0.0"
C++ if 'something' isn't null AND isn't "0.0.0.0"
任何人都可以帮助我处理以下代码吗?
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);
}
谢谢您的支持!
相关文章:
- 如果没有malloc,链表实现将失败
- 如果我只是不访问queue_front节点的子节点,而是将它们推到队列中呢?还是BFS吗
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 设计一个只能由特定类实例化的类(如果可能的话,通过make_unique)
- 线程,如果else语句,都是错误的上下文切换后,会发生什么
- 如果编译的源代码是特定于它编译的硬件的,我们如何分发它
- 如果我std::dynamic_pointer_cast并且底层dynamic_cast的结果为null,那么返回的sh
- C++擦除(如果存在)
- 如果"new int"返回"int*",那么为什么"new int[n]"不返回"int**"?
- 在'如果'陈述输出如何正确
- 如果用户输入无效,如何使用字符串变量-C++重复输入命令
- 如果有一个模板构造函数只有一个泛型参数,为什么我必须有一个复制构造函数
- 如果基类包含双指针成员,则派生类的构造函数
- 如果没有数学库,我如何在C++中创建复利公式
- 如果我已经有一个头,那么模板(-t)文件属于哪里
- 如果C++对象的类在另一个boost模块中声明,如何使用boost将指向该对象的指针返回到python
- 如果条件为TRUE(最佳方式?),则在do while循环中后置增量
- C++ 如果'something'不为空且不"0.0.0.0"