歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C++ 字符串分割 (HDUOJ 2072)

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

日期:2017/3/1 9:59:45   编辑:Linux編程

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

Copyright © Linux教程網 All Rights Reserved