std::string的工具函数 - 用isspace实现trim函数
来源:互联网 发布:java qq登录接口 编辑:程序博客网 时间:2024/05/14 04:45
在CodeProject上有朋友说我不应该将空白字符限制在" /t/n/r" 以内,应该使用isspace来实现trim函数,以处理Unicode的空白字符。此话在理,所以将trim的三个函数改了一下。(参阅上一篇《std::string的工具函数》)
string trimLeft(const string& str) {
string t = str;
for (string::iterator i = t.begin(); i != t.end(); i++) {
if (!isspace(*i)) {
t.erase(t.begin(), i);
break;
}
}
return t;
}
string trimRight(const string& str) {
if (str.begin() == str.end()) {
return str;
}
string t = str;
for (string::iterator i = t.end() - 1; i != t.begin(); i--) {
if (!isspace(*i)) {
t.erase(i + 1, t.end());
break;
}
}
return t;
}
string trim(const string& str) {
string t = str;
string::iterator i;
for (i = t.begin(); i != t.end(); i++) {
if (!isspace(*i)) {
t.erase(t.begin(), i);
break;
}
}
if (i == t.end()) {
return t;
}
for (i = t.end() - 1; i != t.begin(); i--) {
if (!isspace(*i)) {
t.erase(i + 1, t.end());
break;
}
}
return t;
}
string t = str;
for (string::iterator i = t.begin(); i != t.end(); i++) {
if (!isspace(*i)) {
t.erase(t.begin(), i);
break;
}
}
return t;
}
string trimRight(const string& str) {
if (str.begin() == str.end()) {
return str;
}
string t = str;
for (string::iterator i = t.end() - 1; i != t.begin(); i--) {
if (!isspace(*i)) {
t.erase(i + 1, t.end());
break;
}
}
return t;
}
string trim(const string& str) {
string t = str;
string::iterator i;
for (i = t.begin(); i != t.end(); i++) {
if (!isspace(*i)) {
t.erase(t.begin(), i);
break;
}
}
if (i == t.end()) {
return t;
}
for (i = t.end() - 1; i != t.begin(); i--) {
if (!isspace(*i)) {
t.erase(i + 1, t.end());
break;
}
}
return t;
}
原理很浅显,就是把原来用find_first_of和find_first_not_of实现的查找换成循环,自己用isspace来判断。本来想参考一下boost的实现,不过发现它的代码实在有点复杂,所以还是自己用简单的循环来解决了。
- std::string的工具函数 - 用isspace实现trim函数
- std::string的工具函数 - 用isspace实现trim函数
- std::string的工具函数 - 用isspace实现trim函数
- C Tips: std::string / std::wstring 的 Trim 函数
- std::string的工具函数 - 用ostringstream实现repeat
- std::string的工具函数 - 用ostringstream实现repeat
- std::string的工具函数
- std::string的工具函数
- std::string的工具函数
- std::string的工具函数
- std::string的工具函数
- std::string的工具函数
- std::string的工具函数
- std::string的工具函数
- std::string的trim()实现
- installshield STRING类型的trim函数实现
- C++中string的trim实现函数
- C++实现string的trim函数
- CI框架如何删除URL中index.php的终极解决方案
- 敏捷的思索(敏捷开发总结)
- Session 过期问题
- Oracle创建表空间
- Android 拍照程序开发
- std::string的工具函数 - 用isspace实现trim函数
- 计算机视觉领域的一些牛人博客,超有实力的研究机构等的网站链接
- openRtsp分析3
- MFC 下使用ACE 注意
- 面向对象的三个基本特征-----封装、继承、多态
- NSNotificationCenter 的详细说明
- 使用Eclipse搭建C/C++开发环境
- Mac下svn command命令-ios开发使用svn的命令
- C语言实现命令带参数的解析