C++;:如何处理空值(例如来自数据库)? 在C++中,在期望字符串或整数的情况下如何处理空值?

C++;:如何处理空值(例如来自数据库)? 在C++中,在期望字符串或整数的情况下如何处理空值?,c++,null,type-conversion,C++,Null,Type Conversion,通常,从数据库检索数据时会出现上下文,例如使用左连接,其中某些列中的一些不存在的值将由空值而不是预期的字符串或整数表示 C++中的强强制使这种类型的场景比PHP更难处理。 在PHP中,我们可以使用===运算符轻松实现if/else开关: if ($value === NULL) { // No data. } else { // We have some valid data. } C++中的等价外观是什么? 我搜索过,找不到C++相关的问题。 这个问题大体上是正确的。在我的特殊情

通常,从数据库检索数据时会出现上下文,例如使用左连接,其中某些列中的一些不存在的值将由空值而不是预期的字符串或整数表示

C++中的强强制使这种类型的场景比PHP更难处理。

在PHP中,我们可以使用===运算符轻松实现if/else开关:

if ($value === NULL) {
  // No data.
} else {
  // We have some valid data.
}
<> C++中的等价外观是什么?

<>我搜索过,找不到C++相关的问题。

这个问题大体上是正确的。在我的特殊情况下,我使用。

作为字符串指针(以及一般的对象指针),很容易,它们可以保持0来表示它们为null


对于整数,您必须依赖一个外部变量,该变量表示返回的对象是否为null。或者如果你把它作为指针传递,你可以使用上面的0个指针。

是用C++强大的类型检查(可能是null的类型必须检查null)的一种自然方式。

< P>这听起来可能是一个一般的概念,但是C++没有通用的答案。该语言本身没有一个真正通用的“NULL”值,可以与所有类型一起使用,以区分是否已设置为实际值

因此,在任何情况下,答案都完全取决于库或您正在使用的任何东西,以及它是如何被设计为指示“NULL”值的。用于访问数据的函数的返回值可能指示数据是否为NULL。或者可能有类似于单独的IsNull()函数的东西。或者图书馆可能会使用其他不同的方案。有很多可能性

唯一可能的一般答案是:阅读图书馆的文档,了解他们是如何具体处理的。

来自:

函数
cols()
返回 行中的列
isnull()
返回 如果特定字段为空,则使用 列号(从1开始)或 列名

bool操作符[]
只是语法上的
isnull()的糖


在你的问题中,你说你使用的是dbix,所以我链接到了他们的文档。这将始终特定于您使用的库。

库首先如何表示空值?嗯?1) 这不是PHP。在PHP中你可以很容易地做什么并不重要,因为不管你信不信,C++不是PHP。那为什么还要提到它呢?“C++中的等价物会是什么样子?”谁说有必要等价?他们可能因为某种原因而使用不同的语言。。。2) 你有一个实际的情况,你正试图使工作?然后把它贴出来。不要问理论上的问题,尤其是在语言方面没有意义的地方(C++变量没有通用的“null”状态,它们总是持有一个值或未初始化)。3)关于第二点,如果你发布了真实代码,我们可以使用你库的文档来尝试解决你的问题。但现在,这根本没有意义。那么:你的真实情况是什么?你实际使用的代码是什么?总体情况如何?相关:谢谢。我是一个C++初学者,我仍然在努力学习基础知识。我在PHP中自然使用的东西不再适用于C++世界。我必须学会用不同的方式思考一些关键问题。@augustin:那么你应该得到一个a。你不会以其他方式学习。你是对的:忘了你懂其他语言。仅仅因为你会开车并不意味着你会驾驶飞机,那么当你想当飞行员的时候想开车又有什么用呢?@GMan,谢谢。我提到PHP是因为它是我所知道的,它的优点是完美地解释了我的困境。谢谢。相信我,我不止一次地检查了文件。然而,因为我还是一个初学者,所以我还不知道如何使用你所引用的内容。我可能需要重构代码来利用它。我的问题更一般:你如何,有经验的C++开发人员,处理类似的情况。正如您所说,它是特定于库的(它本身是一种与PHP不同的思维方式)。尽管我在dbixx文档中看到了这一点,但我仍然很高兴我提出了这个问题,因为我的特定问题的解决方案可能会通过使用boost::optional来解决,正如TokenMacGuy所建议的那样。谢谢。我正在阅读boost::可选文档,可能最终会用到它。非常感谢。你的语言令人困惑。我想你的意思是“对于字符串指针(和一般的对象指针)…”是的,我指的是两者的指针。现在太习惯C#了,忘了可以在堆栈上分配它们。