2016-12-04 2 views
-2

STL 함수 transform을 사용하여 세트의 모든 문자열을 소문자로 변환하려고합니다. 하지만 C2664 오류가 있습니다. 내 코드에 무슨 문제가 있을까?세트에서 소문자 C++로 변환 errorC2664

set<string> mydoc; 
mydoc.insert("ABCD"); 
transform(mydoc.begin(), mydoc.end(), mydoc.begin(), ::tolower); 
copy(mydoc.begin(), mydoc.end(), output); 
+0

[tag info] (http://stackoverflow.com/tags/c2664/info)는 설명이 충분하지 않습니까? –

+0

1. 'set '의 각 반복자 유형이 (집합에 저장된 내용)은 무엇입니까? 2. 'tolower'가 기대하는 유형은 무엇입니까? – Pixelchemist

+0

@ Pixelchemist 'ostream_iterator 출력 (cout, "\ n");' –

답변

0
  1. 당신은 std::stringtolower에 전달할 수 없습니다.
  2. 반복기는 const입니다. set에 삽입하는 대신 당신이 정렬 된 용기에 모든 요소를 ​​다시 삽입하여 시간을 낭비 할 필요가 것 때문에 나중에 그것을 변경할 때

따라서, 당신은 아마 각 stringtolower를 적용해야합니다.