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

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

具体使用参考:

2. 如果不使用boost库的话,可以使用<string.h>里面的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;
}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/e965e4238f9c80c333f26779991db35e.html