問題を解決するために従来のコードを実行していて、次のようにc_strをチェックすると機能しないことがわかりました。しかし、私が比較をstring.empty()に変更しても動作します。だから私の問題は解決されますが、なぜc_strの比較がうまくいかないのか分かりません。理由は何ですか?
ありがとうございます!
私は - gcc version 4.1.2 20080704(Red Hat 4.1.2-46)を使用しています。c_str()== NULLが機能していない
#include <iostream>
using namespace std;
int main()
{
string a="";
if (a.c_str() == NULL)
{
cout <<"char says empty"<<endl;
}
if (a.empty())
{
cout << "string says empty"<<endl;
}
}
出力
文字列が空の文字列で、.c_str()
はおそらくに設定された第1バイトで、いくつかのメモリに非NULL文字列を返して、私は推測で
?私は、NULLがNULLでないことを意味します、NULL!= ""。 – daniel
標準では、実際には、* null以外のポインタを返すために* 'std :: string :: c_str()'が必要だと思います。 –
空の文字列と文字列はまったく異なる2つのものです。 –