2014-11-06 17 views
-1

我熟悉std :: transform(data.begin(),data.end(),data.begin(),toupper)的用法,這可以將數據中的字符串更改爲全部大寫字母。但是,我想知道是否有一個乾淨的解決方案可以在不修改源代碼的情況下獲取字符串的全大寫版本?解決方法是製作源代碼副本,然後調用副本上的std :: transform,然後返回副本,看起來有點像kludge,我想知道是否有更高效和優雅的解決方案。將std :: string轉換爲大寫而無需修改源

我正在尋找一個純粹的C++ 11解決方案......不依賴任何甚至廣泛可用的C++庫,例如boost。

+0

「使源代碼的副本,然後調用的std ::在複印件變換,然後返回副本「如果您不更改源代碼,您將獲得最高效率。 – Jagannath 2014-11-06 03:03:11

+0

你的意思是說,在編譯時字符串變成了大寫字母,而在源代碼中卻是小寫字母? – didierc 2014-11-06 06:01:19

+2

'std :: string udata; std :: transform(data.begin(),data.end(),std :: back_inserter(udata),:: toupper);'。沒有什麼說變革必須發生。 – 2014-11-06 06:04:24

回答

1

上述每伊戈爾的評論,解決的辦法是在目的地使用的std :: back_inserter .... std::transform(src.begin(), src.end(), std::back_inserter(dest), ::toupper);

相關問題