如何判断std::string的内容为空行?

lcy_888 2013-01-08 11:58:32
将全为半角或全角空格也视为空行,如何判断?
...全文
680 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
十毛 2013-01-10
  • 打赏
  • 举报
回复

1. 使用trim函数
#include <boost/algorithm/string.hpp>
bool isBlank(const std::string &str){
    std::string tmp = str;
    boost::algorithm::trim(tmp);
    return tmp.length() == 0;
}

2. 使用boost正则表达式
#include <boost/regex.hpp>
bool isBlank(const std::string &str){
    const boost::regex e("\\s*");
    return boost::regex_match(str, e);
}
编译的时候需要链接boost_regex库, 即添加链接参数-l boost_regex
lswandym_888 2013-01-10
  • 打赏
  • 举报
回复
根据楼主的要求,写了一个,测试通过,但代码好像哆嗦了些。 bool IsBlankLine(const std::string s) { int len = s.length(); int pos = 0; bool flag=false;//假定是非打印字符 do { if(s[pos]<0)//是中文的一部份 if(s[pos] == '\xA1' && s[pos + 1] == '\xA1')//如果是全角空格跳过,抛入【测试是否是可打印字符】过程 pos++; else return false; pos++; }while (pos < len); pos = 0; do { if(isgraph(s[pos])==0)//测试是否是可打印字符  flag=false; else flag=true; pos++; }while (pos < len && !flag); return !flag; }
lcy_888 2013-01-10
  • 打赏
  • 举报
回复
楼上的可行,但是对中文全角无能为力
十八道胡同 2013-01-09
  • 打赏
  • 举报
回复
那就判断空格的ascii码,1楼已经写出来了。
raymefun 2013-01-09
  • 打赏
  • 举报
回复
什么意思? 没听懂?????
lcy_888 2013-01-09
  • 打赏
  • 举报
回复
用boost正则表达式如何判断。
HayYoung 2013-01-09
  • 打赏
  • 举报
回复

#include <iostream>
#include <string>

bool IsBlankLine(const std::string& str)
{
	int len = str.length();
	int pos = 0;
	while (pos < len) {
		if (str[pos] == ' ')
			pos++;
		// 这里仅是拿ANSI举例,全角空格是A1 A1
		// 如果是utf文本的话,全角空格是E3 80 80 看文件开头是否EF BB BF,
		// 也可能是没标志,不过utf和ansi很容易区分出来。
		// 如果是unicode    ,全角空格是00 30 看文件开头是否是FF FE
		else if ( str[pos] == '\xA1' && str[pos + 1] == '\xA1')
			pos += 2;
		else
			return false;
	}
	return true;
}

int main()
{
	using namespace std;
	string str = "   ";
	if (IsBlankLine(str))
		cout << "Is blank line" << endl;
}

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧