c/c++字符串分割方法总结2

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;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值