基本上我在文件的某些行中有空格" "
或空白块或""
空的字符串,我想知道C ++中是否有一个函数可以检查它。
* note : *作为一个附带问题,在C ++中,如果我想打破一个字符串并检查它的模式我应该使用图书馆吗?如果我想自己编码,我应该知道哪些基本函数可以操作字符串?有什么好的参考资料吗?
答案 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。