-1
std :: transform (data.begin(), data.end(), data.begin(), :: toupper)의 사용법을 알고 있습니다. 데이터의 문자열을 모두 대문자로 바꿀 수 있습니다. 그러나 원본을 수정하지 않고 문자열의 전체 대문자 버전을 얻을 수있는 깨끗한 솔루션이 있다면 궁금합니다. 원본 복사본을 만든 다음 복사본에서 std :: transform을 호출 한 다음 복사본을 반환하는 해결 방법은 마치 kludge처럼 보입니다. 더 효율적이고 우아한 솔루션이 있는지 궁금합니다.소스를 수정하지 않고 std :: string을 대문자로 변환합니다.
나는 순수한 C++ 11 솔루션을 찾고 있는데 ... 부스트와 같은 널리 사용 가능한 C++ 라이브러리에 의존하지 않아도됩니다.
"원본의 복사본을 만들고 다음 다음 복사본에 변환 :: 표준을 호출하고, 복사본을 반환합니다. "소스를 변경하지 않으면 얻을 수있는만큼 효율적입니다. – Jagannath
소스에서 소문자 인 동안 어떻게 든 문자열이 컴파일 타임에 대문자로 바뀌는 것을 의미합니까? – didierc
'std :: string udata; std :: transform (data.begin(), data.end(), std :: back_inserter (udata), :: toupper);'. 변형은 그 자리에서 일어나야한다고 말하지 않습니다. –