2、c++ 分割字符boost::split & stroke

直接以例题学习分割字符

#include 
#include 
#include 
#include 
#include 
 
using namespace std;
 
int main( int argc, char** argv )
{
  string source = "I am a  stduent,you are teacher!";
  vector destination;
  boost::split( destination, source, boost::is_any_of( " ,!" ), boost::token_compress_on );//如果此处使用boost::token_compress_off
vector::iterator it ;
  for( it= destination.begin(); it != destination.end(); ++ it )
    cout << *it << endl;
 
  return 0;
}

//(destination)是用来存储分割的结果的容器
//(source)是要切割的內容
//(boost::is_any_of( " ,!" ))切割条件
// boost::token_compress_on 定义为enum token_compress_mode_type { token_compress_on, token_compress_off };具体用来定义压缩字符空格

ubuntu@ubuntu:~$ g++ test.cpp -o test
ubuntu@ubuntu:~$ ./test 
I
am
a
stduent
you
are
teacher

ubuntu@ubuntu:~$ 

如果改变其中第四个参数;

#include 
#include 
#include 
#include 
#include 
 
using namespace std;
 
int main( int argc, char** argv )
{
  string source = "I am a  stduent,you are teacher!";
  vector destination;
  boost::split( destination, source, boost::is_any_of( " ,!" ), boost::token_compress_off );//如果此处使用boost::token_compress_off
vector::iterator it ;
  for( it= destination.begin(); it != destination.end(); ++ it )
    cout << *it << endl;
 
  return 0;
}

默认情况下,第四个参数是打开的;

ubuntu@ubuntu:~$ g++ test.cpp -o test
ubuntu@ubuntu:~$ ./test 
I
am
a

stduent
you
are
teacher

ubuntu@ubuntu:~$ 

这是一种使用boost库进行函数分割;http://www.boost.org/
另一种方法使用stroke函数

#include 
#include 
  
using namespace std;
  
int main( int argc, char** argv )
{
  char str[] = "I am a  stduent,you are teacher!";
  char spliter[] = " ,!";
  
  char * pch;
  pch = strtok( str, spliter );
  while( pch != NULL )
  {
    cout << pch << endl;
    pch = strtok( NULL, spliter );
  }
  return 0;
}

这里提供char* strtok(char*, const char*)函数原型

ubuntu@ubuntu:~$ g++ test.cpp -o test
ubuntu@ubuntu:~$ ./test 
I
am
a
stduent
you
are
teacher
ubuntu@ubuntu:~$ 
  • < string.h>是C版本的头文件,包含比如strcpy、strncpy之类的字符串处理函数
  • < cstring>是string.h头文件升级版;
  • < string>是C++标准定义的头文件,它定义了一个string的字符串类,里面包含了string类的各种操作,同时包含< string.h>文件

简单举个例子

  • #include < cstring> //不可以定义string s;可以用strcpy等
  • #include < string> //可以定义string s;可以用到strcpy等
  • #include < string.h> //不可以定义string s;可以用到strcpy等

你可能感兴趣的:(C/C++基础知识)