如何检查从文件扫描的行是空的还是包含不可打印的字符?我已经尝试在getline的结果上使用strlen(),当有空行但是不可打印的字符会破坏此代码时等于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;
}