3

を使用してC++ Builder XE6います。パラメータとして aを取得しUnicodeStringています。文字列が空の文字列ではなく NULL に設定されているかどうかを確認したいと思います。

パラメータがnullかどうかを確認するためにいくつかの簡単な比較を試みましたが、失敗しているようです。動作していないように見える演算子を使用して==いるため、オーバーロードされていると思われます。

私はもう試した:

if (searchString == NULL)

デバッガー ビューでは{ NULL }、ローカル変数の値が表示されます。変数をウォッチリストに追加すると、「データ」のプロパティがあることが示されますNULL

ここに画像の説明を入力

比較を適切に行う方法についてのアイデアはありますか?

4

1 に答える 1

9

NULLの値などというものはありませんUnicodeString。文字列は一連の文字ですNULLが、ポインターです (実際には int に評価されるマクロですが0、コンパイラーが をサポートしていない場合は null ポインターを示すために使用されるはずですnullptr)。

内部的には、文字列が空の場合、 のdataメンバーUnicodeStringは NULL であり、文字列に少なくとも 1 文字ある場合は非 NULL です。

文字列が空かどうかを確認するには、メンバーが NULL かIsEmpty()どうかを確認するメソッドを使用します。data空の状態は 1 つだけです。一部の言語のように「空」と「null」の区別はありません。

デバッガに表示される値は の内部dataメンバーであり、のインターフェースのUnicodeString一部ではありません。UnicodeStringデバッガーで NULL が表示された場合は、空の文字列として扱う必要があります。

于 2014-08-13T20:16:00.937 に答える