2017-01-16 4 views
0

Когда я пытаюсь использовать tolower в строке, вместо того чтобы делать буквы в нижнем регистре, программа преобразует их в случайные символы. Вот мой код:У меня возникли проблемы с использованием tolower() в C++

#include <iostream> 
#include <locale> 
using namespace std; 

int main() 
{ 
    string hi= "thTSMSdjNnJlJjnJJKn"; 
    for (int i=0; i<hi.length(); i++) 
    { 
     hi[i]+=tolower(hi[i]); 
     cout << hi[i]; 
    } 
} 

Это выход: Þð╚ã║ã╚È╝▄┤Ï┤È▄┤┤Â▄

Что с ней? Это не тот код, который я хочу использовать tolower, но я просто поместил его в отдельный пример, чтобы было более ясно. Я не против использовать верхний, но главное, что я получаю все буквы в строке в одном и том же случае.

+6

привет [я] + = ToLower (привет [я]); -> hi [i] = tolower (hi [i]); –

+8

'hi [i] + = ??' Должен быть закрыт как опечатка ... – John3136

+0

вы не '#include ' сначала, второй 'hi [i] = tolower (hi [i]);' should работа –

ответ

3

Там опечатка в цикл:

hi[i] += tolower(hi[i]); 

должен быть

hi[i] = tolower(hi[i]); 

Кроме того, ваш код отсутствует #include <string>