C++ 字符串分割 (HDUOJ 2072)

1. C++ 的boost库里有直接的分割函数split,可以将字符串按照指定的分割规则分割成字符串数组,类似Java。

具体使用参考:http://stackoverflow.com/questions/5734304/c-boost-split-string


2. 如果不使用boost库的话,可以使用<string.h>里面的strtok函数进行字符串分割。

具体函数使用见:http://www.cplusplus.com/reference/cstring/strtok/


下面附上HDUOJ 2072的源代码,思路就是将每行的字符串按照空格分割成字符串数组,然后统计有多少个不同的字符串,这个时候刚好可以利用C++ STL里set这个类,相同的字符串只会存储一个。

#include <iostream>
#include <set>
#include <iomanip>
#include <cmath>
#define PI 3.1415927
using namespace std;

int getNum(string s) {
	set<string> str;
	const char *d = " ";
	char *p;
	p = strtok(const_cast<char*>(s.c_str()), d);
	while(p) {
		str.insert(p);
		p = strtok(NULL, d);
	}
	
	return str.size();
}

int main()
{ 
	string s;
	while(getline(cin,s)) {
		if(s=="#") break;
		cout << getNum(s) << endl;
	}
	return 0;
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值