检查行是否为空或包含不可引用的字符

时间:2015-12-11 13:40:47

标签: c character-encoding char special-characters

如何检查从文件扫描的行是空的还是包含不可打印的字符?我已经尝试在getline的结果上使用strlen(),当有空行但是不可打印的字符会破坏此代码时等于1。我怎样才能做得更好?

1 个答案:

答案 0 :(得分:1)

如果if是C代码,那么你可以自己编写相应的函数

int isValid( const char *s )
{
    while ( *s && !isgraph( ( unsigned char )*s ) ) ++s;

    return *s != '\0';
}

如果它是C ++代码并且您使用的是字符数组,则可以使用以下方法

#include <algorithm>
#include <iterator>
#include <cctype>
#include <cstring>

//...

if ( std::all_of( s, s + std::strlen( s ), []( char c ) { return !std::isgraph( c ); } ) )
{
   std::cout << "Invalid string" << std::endl;
}

对于std::string类型的对象,检查看起来类似

if ( std::all_of( s.begin(), s.end(), []( char c ) { return !std::isgraph( c ); } ) )
{
   std::cout << "Invalid string" << std::endl;
}