检查字符串对象是否只有空字符

kay*_*kun 1 c++

我想检查一个20个字符的字符串对象是否只有空字符(值为零).我的尝试:

string subString;
subString = fileBuffer.substr(origin, origin+20);

if(strCompare.compare("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0") == 0)
    cout<<"string is empty"<<endl;
else
    cout<<"string is not empty"<<endl;
Run Code Online (Sandbox Code Playgroud)

我确定subString被赋予20个null的字符,但是,程序只输出"string is not empty".我也试过其他方法,例如将compare参数设为""或NULL无效.有人可以向我指出任何明显的错误或正确的方法吗?我真的很感激.

小智 6

这个问题:

 if(strCompare.compare("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0")
Run Code Online (Sandbox Code Playgroud)

是从C风格的字符串构造的字符串将为空.您需要显式构造一个字符串,提供大小.单程:

 if( strCompare.compare(
     std::string( "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 20 ) == 0 )
Run Code Online (Sandbox Code Playgroud)

或稍短:

 if( strCompare.compare(
     std::string( 20, 0 ) == 0 )
Run Code Online (Sandbox Code Playgroud)

  • 它将有 20 个空字符 - std::string 可以愉快地包含空(或任何其他)字符。 (2认同)