2013-02-08 24 views
3

我使用C++ 11(窗口7 64位,視覺工作室2012)regex_replace問題

我使用一個循環來替換由另一個一些子串。 我有一個文件,有一個雙斜槓(/)分隔的數字。 例如:

10//20//1 3//4//5 5//2//1 to 10 20 1 3 4 5 5 2 1 

然而,當我試圖用正則表達式做到這一點,似乎是我做錯了什麼。什麼都沒發生。另外,我在哪裏可以閱讀更多關於正則表達式C++ 11

string fData(data.substr(2)); 
string replaceStr("10//20//1 3//4//5 5//2//1"); 
regex r("//" 
regex_replace(fData,r," "); 

但沒有任何反應。

就像我之前說的,如果你還可以指出一個網頁,我可以閱讀更多關於這個,除了答案。我有它的工作,但我想開始使用正則表達式。

感謝

回答

5

regex_replace不做字符串的就地編輯;它返回輸出字符串。

例如: auto out = regex_replace(fData,r," ");

在此示例中,出於將是預期的值的字符串( 「10 20 1 3 4 5 5 2 1」)。 This cheat sheet非常有用(來自http://cpprocks.com/regex-cheatsheet/)。請享用!

+0

在性能方面。使用regex_replace是否與循環和替換find和replace一樣? – Blues76 2013-02-08 20:13:17

+0

'regex_replace'好像在引擎蓋下面使用了一個正則表達式迭代器(不要拿我的話)。從我從其他答案和互聯網上看到的,與其他語言的正則表達式實現(例如Python)相比,C++ 11'regex_replace'相當慢。您可以自己進行基準測試,以查看哪個版本適合您的性能需求。 – 2013-02-09 20:10:48

+0

感謝您的幫助! – Blues76 2013-02-10 17:12:25