將字符串轉換爲小寫可以轉化的字符串在一個新的字符串
std::transform(s.begin(), s.end(), s.begin(), ::toupper);
做,但什麼是將其改造成一個新的修改後的副本的最佳方式?
嘗試:
string s1="text",s2;
std::transform(s1.begin(), s1.end(), s2.begin(), ::toupper);
,但它在運行時失敗,「段錯誤」
我設法做到這一點:
string s1="text",s2;
s2 = s1;
std::transform(s2.begin(), s2.end(), s2.begin(), ::toupper);
,當然你可以創建一個功能去char字符,但我不認爲這是最佳的,我不學什麼,從這...
您需要'std :: back_inserter()'。 – 0x499602D2 2014-11-04 22:27:31
你應該使用'std :: toupper'並確保如果'char'被簽名,負值不會被傳遞給它,以免你有未定義的行爲。 – chris 2014-11-04 22:33:45
@chris這個例子實際上是從[cppreference](http://en.cppreference.com/w/cpp/algorithm/transform)網站複製粘貼的, 那麼std :: string是否有unsigned char或負值? – 2014-11-04 22:38:17