我熟悉std :: transform(data.begin(),data.end(),data.begin(),:: toupper)的用法,它可以将数据中的字符串更改为全部大写。但是,我想知道,如果有一个干净的解决方案可以获得字符串的全大写版本而不修改源代码?制作副本然后在副本上调用std :: transform然后返回副本的解决方法看起来有点像kludge,我想知道是否有更高效和更优雅的解决方案。
我正在寻找一个纯粹的C ++ 11解决方案......不依赖于任何广泛可用的C ++库,例如boost。
答案 0 :(得分:2)
根据上述Igor的评论,解决方案是在目的地使用std :: back_inserter .... std::transform(src.begin(), src.end(), std::back_inserter(dest), ::toupper);