Я знаком с использованием std :: transform (data.begin(), data.end(), data.begin(), :: toupper), который может изменить строку данных во всех прописных. Мне интересно, однако, если есть чистое решение, которое может получить версию в верхнем регистре строки без изменения источника? Обходное решение сделать копию источника, а затем вызвать std :: transform на копии, а затем вернуть копию, похоже, похоже на kludge, и мне интересно, есть ли более эффективное и элегантное решение.преобразование std :: string в верхний регистр без изменения источника
Я ищу чистое решение C++ 11 ... без зависимости от любых широко доступных библиотек C++, таких как boost.
«сделать копию исходного кода и последующего вызов зОго :: преобразования на копию, а затем возвращая копию «так же эффективно, как и вы, если вы не меняете источник. – Jagannath
Вы имеете в виду, что каким-то образом в момент компиляции строка будет заглавной, а в исходном тексте - строчный? – didierc
'std :: string udata; std :: transform (data.begin(), data.end(), std :: back_inserter (udata), :: toupper); '. Ничто не говорит о том, что трансформация должна произойти на месте. –