C++之从头开始(6)String 剔除 空格
2013-11-22 23:27
225 查看
很多其他语言的libary都会有去除string类的首尾空格的库函数,但是标准C++的库却不提供这个功能。但是C++string也提供很强大的功能,实现trim这种功能也不难。下面是几种方法:
1.使用string的find_first_not_of,和find_last_not_of方法
/*
Filename : StringTrim1.cpp
Compiler : Visual C++ 8.0
Description : Demo how to trim string by find_first_not_of & find_last_not_of
Release : 11/17/2006
*/
#include <iostream>
#include <string>
std::string& trim(std::string &);
int main()
{
std::string s = \" Hello World!! \";
std::cout << s << \" size:\" << s.size() << std::endl;
std::cout << trim(s) << \" size:\" << trim(s).size() << std::endl;
return 0;
}
std::string& trim(std::string &s)
{
if (s.empty())
{
return s;
}
s.erase(0,s.find_first_not_of(\" \"));
s.erase(s.find_last_not_of(\" \") + 1);
return s;
}
2.使用boost库中的trim,boost库对提供很多C++标准库没有但是又非常常用和好用的库函数,例如正则表达式,线程库等等。
/*
Filename : boostStringTrim.cpp
Compiler : Visual C++ 8.0 / ISO C++ (boost)
Description : Demo how to boost to trim string
Release : 02/22/2007 1.0
*/
#include <iostream>
#include <string>
#include <boost/algorithm/string.hpp>
using namespace std;
using namespace boost;
int main() {
string s = \" hello boost!! \";
trim(s);
cout << s << endl;
}
3.使用template(我用GCC编译不通过,用VS2005却可以)
/*
Filename : stringTrim1.cpp
Compiler : Visual C++ 8.0
Description : Demo how to trim string by other method.
Release : 11/18/2006
*/
#include <string>
#include <iostream>
#include <cwctype>
template <class T>
std::basic_string<T>& trim(std::basic_string<T>&); [Page]
int main( )
{
std::string s = \" Hello World!! \";
std::cout << s << \" size:\" << s.size() << std::endl;
std::cout << trim(s) << \" size:\" << trim(s).size() << std::endl;
return 0;
}
template <class T>
std::basic_string<T>& trim(std::basic_string<T>& s)
{
if (s.empty()) {
return s;
}
std::basic_string<T>::iterator c;
// Erase whitespace before the string
for (c = s.begin(); c != s.end() && iswspace(*c++);); s.erase(s.begin(), --c);
// Erase whitespace after the string
for (c = s.end(); c != s.begin() && iswspace(*--c);); s.erase(++c, s.end());
return s;
}
1.使用string的find_first_not_of,和find_last_not_of方法
/*
Filename : StringTrim1.cpp
Compiler : Visual C++ 8.0
Description : Demo how to trim string by find_first_not_of & find_last_not_of
Release : 11/17/2006
*/
#include <iostream>
#include <string>
std::string& trim(std::string &);
int main()
{
std::string s = \" Hello World!! \";
std::cout << s << \" size:\" << s.size() << std::endl;
std::cout << trim(s) << \" size:\" << trim(s).size() << std::endl;
return 0;
}
std::string& trim(std::string &s)
{
if (s.empty())
{
return s;
}
s.erase(0,s.find_first_not_of(\" \"));
s.erase(s.find_last_not_of(\" \") + 1);
return s;
}
2.使用boost库中的trim,boost库对提供很多C++标准库没有但是又非常常用和好用的库函数,例如正则表达式,线程库等等。
/*
Filename : boostStringTrim.cpp
Compiler : Visual C++ 8.0 / ISO C++ (boost)
Description : Demo how to boost to trim string
Release : 02/22/2007 1.0
*/
#include <iostream>
#include <string>
#include <boost/algorithm/string.hpp>
using namespace std;
using namespace boost;
int main() {
string s = \" hello boost!! \";
trim(s);
cout << s << endl;
}
3.使用template(我用GCC编译不通过,用VS2005却可以)
/*
Filename : stringTrim1.cpp
Compiler : Visual C++ 8.0
Description : Demo how to trim string by other method.
Release : 11/18/2006
*/
#include <string>
#include <iostream>
#include <cwctype>
template <class T>
std::basic_string<T>& trim(std::basic_string<T>&); [Page]
int main( )
{
std::string s = \" Hello World!! \";
std::cout << s << \" size:\" << s.size() << std::endl;
std::cout << trim(s) << \" size:\" << trim(s).size() << std::endl;
return 0;
}
template <class T>
std::basic_string<T>& trim(std::basic_string<T>& s)
{
if (s.empty()) {
return s;
}
std::basic_string<T>::iterator c;
// Erase whitespace before the string
for (c = s.begin(); c != s.end() && iswspace(*c++);); s.erase(s.begin(), --c);
// Erase whitespace after the string
for (c = s.end(); c != s.begin() && iswspace(*--c);); s.erase(++c, s.end());
return s;
}
相关文章推荐
- java从头开始学习到选择c++ (三)控制语句需要注意的地方
- java从头开始学习到选择c++ (四)数组需要注意的地方
- C++中如何去掉std::string对象的首尾空格
- java从头开始学习到选择c++ (二)java概述(2)
- C/C++ / string 字符串去掉左右空格
- C++的string前后去空格函数Trim
- C++ windows编程学习笔记(二)——从头开始
- C++中如何去掉std::string对象的首尾空格
- C++之从头开始(8)二进制、十进制的转化
- C++之从头开始(10)* &的使用
- C++去掉string , char[] 右边的空格
- LeetCode 8. String to Integer (atoi) C++ --字符串转为数字,包含正负号、空格、字母、数字等字符
- [C/C++标准库]_[初级]_[使用模板删除字符串前后空格((w)string space)]
- C++之从头开始(3)常量
- [C/C++标准库]_[初级]_[使用模板删除字符串前后空格((w)string space)]
- C++之从头开始(7)指针做函数参数
- java从头开始学习到选择c++ (一)java概述(1)
- C++之从头开始(2)
- leetcode 434. Number of Segments in a String 按照空格分割字符串 + C++的stringstream的一个很好应用示范
- 输入带空格的string类型字符串 c++