C ++检查string是空格还是null

时间:2011-06-12 23:45:08

标签: c++ string

基本上我在文件的某些行中有空格" "或空白块或""空的字符串,我想知道C ++中是否有一个函数可以检查它。

* note *作为一个附带问题,在C ++中,如果我想打破一个字符串并检查它的模式我应该使用图书馆吗?如果我想自己编码,我应该知道哪些基本函数可以操作字符串?有什么好的参考资料吗?

6 个答案:

答案 0 :(得分:5)

std::string str = ...;
if (str.empty() || str == " ") {
    // It's empty or a single space.
}

答案 1 :(得分:3)

bool isWhitespace(std::string s){
    for(int index = 0; index < s.length(); index++){
        if(!std::isspace(s[index]))
            return false;
    }
    return true;
}

答案 2 :(得分:2)

 std::string mystr = "hello";

 if(mystr == " " || mystr == "")
   //do something

在断开字符串时,std::stringstream可能会有所帮助。

答案 3 :(得分:2)

在文件的某些行中没有“nullstring”。

但你可以有一个空字符串,即一个空行。

您可以使用例如std::string.length,或者如果你更喜欢C,strlen函数。

为了检查空格,isspace函数很方便,但请注意,对于char个字符,参数应该被转换为unsigned char,例如,从袖口开始,

bool isSpace( char c )
{
    typedef unsigned char UChar;
    return bool( ::isspace( UChar( c ) ) );
}

干杯&amp;第h。,

答案 4 :(得分:0)

由于您尚未指定字符解释&gt; 0x7f,我假设是ASCII(即字符串中没有高位字符)。

#include <string>
#include <cctype>

// Returns false if the string contains any non-whitespace characters
// Returns false if the string contains any non-ASCII characters
bool is_only_ascii_whitespace( const std::string& str )
{
    auto it = str.begin();
    do {
        if (it == str.end()) return true;
    } while (*it >= 0 && *it <= 0x7f && std::isspace(*(it++)));
             // one of these conditions will be optimized away by the compiler,
             // which one depends on whether char is signed or not
    return false;
}

答案 5 :(得分:-2)

如果要进行模式检查,请使用regexp。