是否有類似於Java的C++的分割類型函數?我知道無視,但我不太明白,以及它如何適用於我的情況。C++的分割函數
我的輸入是:
{
item = ball
book = lord of the rings
movie = star wars
}
我的給定的輸入是<attribute>
= <value>
和我具有存儲在不同的字符串兩個或整數(取決於的值,例如,如果它的一個數字,使用整數)。
是否有類似於Java的C++的分割類型函數?我知道無視,但我不太明白,以及它如何適用於我的情況。C++的分割函數
我的輸入是:
{
item = ball
book = lord of the rings
movie = star wars
}
我的給定的輸入是<attribute>
= <value>
和我具有存儲在不同的字符串兩個或整數(取決於的值,例如,如果它的一個數字,使用整數)。
使用Boost::tokenizer,因爲它做你想做的事情。從手冊:
// simple_example_1.cpp
#include<iostream>
#include<boost/tokenizer.hpp>
#include<string>
int main(){
using namespace std;
using namespace boost;
string s = "This is, a test";
tokenizer<> tok(s);
for(tokenizer<>::iterator beg=tok.begin(); beg!=tok.end();++beg){
cout << *beg << "\n";
}
}
它可以與icc和g ++一起使用。你有提升安裝?你得到的錯誤是什麼? – Sardathrion
使用strtok():http://www.cplusplus.com/reference/clibrary/cstring/strtok/。
只知道它不能重入,因爲它使用了一個內部靜態變量,所以不要在嵌套循環或類似的東西中調用它兩次。
和編輯:
這是一個非常酷做方案,將令牌化用空格整個字符串 - 你必須在=之後處理值重新走到一起,但它會教你STL以及:)
strtok不是線程安全的。 – Sardathrion
如果它不足以調用嵌套循環,它絕對不是線程安全的 - 我想任何人問如何分割字符串不需要擔心複雜性:p –
@ w00te strtok將無法在我的工作case ...因爲我可以輸入類似於'item =棒球棒'的信息,棒球棒必須是一個字符串,strtok會將它分成兩個字 – SNpn
你是什麼意思的'忽略',以及爲什麼你認爲模板有什麼與分裂字符串有什麼關係?查看std :: string的文檔,看看它有什麼。 – bmargulies
@bmargulies在'java' API中有一個'str.split(「=」)'類型的函數,在''C++'API中有一個cin.ignore(1,「=」)我已經嘗試使用忽略,但我迷失在如何擺脫paranthese – SNpn
可能重複的[如何在C++中拆分字符串?](http://stackoverflow.com/questions/236129/how-to -split-a-string-in-c) –