可能重複的字符串由空格:
C++: How to split a string?
Splitting a string拆分在C++
什麼是去了解在C分割字符串以空格最好的辦法++?
我希望能夠根據選項卡,空間等分割它,當然忽略多個選項卡/空格/等。並且最終沒有這些事情的問題。最終,我將最終將其存儲在一個向量中,但是如果存在一些簡單的內置標準庫分割方式,我可以輕鬆地在數據類型之間進行轉換。
我是一個UNIX機器的g ++上使用Microsoft Visual C++
可能重複的字符串由空格:
C++: How to split a string?
Splitting a string拆分在C++
什麼是去了解在C分割字符串以空格最好的辦法++?
我希望能夠根據選項卡,空間等分割它,當然忽略多個選項卡/空格/等。並且最終沒有這些事情的問題。最終,我將最終將其存儲在一個向量中,但是如果存在一些簡單的內置標準庫分割方式,我可以輕鬆地在數據類型之間進行轉換。
我是一個UNIX機器的g ++上使用Microsoft Visual C++
這可能是矯枉過正這個特定的問題,但考慮到Boost.Regex建設這個,不。 (老實說,我可能只是寫一個腳本,迴應每一個關於SO的C++問題,用'使用Boost',然後在業力中出現,但它確實有幫助)。
+1爲您的第二段。如果沒有增加的代表,不能離開你。 – 2010-02-16 18:16:49
我意識到這是很久以前發佈的,但我有一個衝動評論。我知道不是每個人都像我一樣,但我喜歡重新創造輪子......有時候我會回答我提出的問題,並提出使用提升的建議,但是我想知道爲什麼或如何運作,以及如何自行實施。當然,如果您不得不快速發佈產品,由於功能增強提供已經過測試和可靠,它絕對是一個不錯的選擇。但是,如果您有時間學習如何實現這些功能的功能,它將爲您提供非常寶貴的技能。所以 - 不要創建該腳本;)除非緊急。 – 2014-11-03 21:14:15
這就是爲什麼我從不投票使用提升的答案。 – 2018-01-22 20:48:22
這可能是值得商榷無論是最好,但一個真正容易辦法做到這一點是把你的字符串轉換成字符串流,然後讀取數據退了出來:
// warning: untested code.
std::vector<std::string> split(std::string const &input) {
std::istringstream buffer(input);
std::vector<std::string> ret;
std::copy(std::istream_iterator<std::string>(buffer),
std::istream_iterator<std::string>(),
std::back_inserter(ret));
return ret;
}
如果你願意,你可以直接從迭代器初始化vector
:
std::vector<std::string> split(std::string const &input) {
std::istringstream buffer(input);
std::vector<std::string> ret((std::istream_iterator<std::string>(buffer)),
std::istream_iterator<std::string>());
return ret;
}
要麼應該與任何合理的C++編譯器的工作。隨着C++ 11,您可以通過使用大括號初始化,而不是一點點清理第二個版本:
std::vector<std::string> ret{std::istream_iterator<std::string>(buffer),
std::istream_iterator<std::string>()};
我寧願'std :: istringstream',但不然這很好。 +1 – sbi 2010-02-16 18:34:06
這是我用:
/* Tokenizing a string */
std::vector<std::string> Parser::tokenizer(const std::string& p_pcstStr, char delim) {
std::vector<std::string> tokens;
std::stringstream mySstream(p_pcstStr);
std::string temp;
while(getline(mySstream, temp, delim)) {
tokens.push_back(temp);
}
return tokens;
}
你DELIM將是一個空白, p_pcstStr將是要標記的字符串,並且返回將是一個包含所有字符串的矢量,它們之間有一個空格。
+ 1用於添加分隔符參數 – crocboy 2013-07-17 15:41:40
請參閱:http://stackoverflow.com/questions/236129/c-how-to-split-a-string – kennytm 2010-02-16 18:07:19
和http://stackoverflow.com/questions/909289/splitting-a-string – Potatoswatter 2010-02-16 18:11:43
這個問題讓我意識到多少蟒蛇讓我的生活更輕鬆。 – dassouki 2010-02-16 18:15:41