我想检查一个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)