0

データ内の文字列をすべて大文字に変更できる std::transform(data.begin(), data.end(), data.begin(), ::toupper) の使用法に精通しています。ただし、ソースを変更せずに文字列のすべて大文字のバージョンを取得できるクリーンなソリューションがあるかどうか疑問に思っていますか? ソースのコピーを作成し、そのコピーに対して std::transform を呼び出してからコピーを返すという回避策は、少し面倒に思えます。より効率的でエレガントな解決策があるかどうか疑問に思っています。

私は純粋な C++11 ソリューションを探しています...ブーストなどの広く利用可能な C++ ライブラリにも依存しません。

4

1 に答える 1

2

上記の Igor のコメントによると、解決策は宛先で std::back_inserter を使用することです.... std::transform(src.begin(), src.end(), std::back_inserter(dest), ::toupper);

于 2014-11-10T18:58:20.597 に答える