1. strtok()
strtok 函数原型为char* strtok(char* s,char *delim),函数功能为返回delim字符串中包含字符的截断子串,第一次调用时该函数将顺序查找满足条件的分隔标志,当找到有分割标志时,则将分割标志替换成‘\0’。由于每次调用函数时,函数只返回一个分割字串,因此需要多次调用该函数。而在以后的调用中,需要传给s一个空串,至于为什么,我还没弄清楚,等到弄清楚时再来完善。需要说明的是,最初传入给s的实参是字符型数组,不能是指向常量的字符指针。因为字符型常量位于内存的常量区,只能读,不能进行修改,而strtok()函数会对s指向的字符串进行修改,破坏字符串的内容。
strtok()函数对多个字符串的分割来说是方便的。
相关代码如下:
#include <stdio.h>
#include <string.h>
int main(void)
{
char buf[]=”Golden Global View”;
char* token = strtok( buf, " ");
while( token != NULL )
{
printf( ”%s “, token );
token = strtok( NULL, ” “);
}
return 0;
}
其结果为:
Golden
Global
View
2. substring()
substring函数的原型为basic_string substr(size_type _Off = 0,size_type _Count = npos) const;
_off:截断字符的开始位置(下标从0开始)
_Count:截断字符长度(从截断字符的位置算起)
substring()函数对单一字符串的截取来说是非常方便的,一般推荐在这种情况下使用。
代码如下:
// ConsoleApplication16.cpp : 定义控制台应用程序的入口点。
//字符串分割函数
#include "stdafx.h"
#include<iostream>
#include<string>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
string s = "l am fhu nfdu jjfh";
int i = 0;
int k;
while (i < s.length()){
k = i;
string subs;
if (i == 0){
i = s.find(" ", k);
subs = s.substr(k, i - k);
}
else{
i = s.find(" ", k + 1);
subs = s.substr(k + 1, i - k - 1);
}
cout << subs << endl;
}
system("pause");
return 0;
}