2016-12-08 4 views
0

문자열을 소문자로 변환 할 수있는 빠른 휴대용 함수가 필요했습니다. 조사한 후에이 코드를 만들었습니다. 슬프게도 작동하지 않습니다.std :: string을 소문자로 변환 함수

#include <iostream> 
#include <string> 
#include <algorithm> 

using namespace std; 
void low_string(string); 
int main() 
{ 
      string lower = "This is MIX case TEST"; 
      low_string(lower); 
      cout << lower; 
      return 0; 
} 
void low_string(string lower) 
{ 
    transform(lower.begin(), lower.end(), lower.begin(), ::tolower); 
} 

문자열은 여전히 ​​대문자로 유지됩니다. 나는 그것을 통과하는 등의 일을해야한다고 생각하지만, 내가 알 수없는 언어에 익숙하지 않다. 어떤 도움을 주셔서 감사합니다.

+0

문자열은 참조가 아니라 값으로 수신해야합니다. std :: string & lower –

+1

오타로 닫기 투표하기. 참조로 전달하는 것을 잊었습니다. 'void low_string (string lower)'=>'void low_string (string & lower)' – NathanOliver

+0

@NathanOliver 와우! 나는 그 잘못을 찾고 있었다. –

답변

2

문자열에서 값을 전달하므로 함수의 lower 매개 변수는 실제로 lower의 복사본이 main입니다.

void low_string(string& lower)에 코드를 변경

하고 당신은 문자열이 아닌 문자열 자체의 복사본을 수정하는

2

그것을 작동합니다. 대신 참조로 전달하는 것을 고려해야합니다.

void low_string(string & lower) 
{ 
    transform(lower.begin(), lower.end(), lower.begin(), ::tolower); 
} 
관련 문제