2015-09-18 4 views
-2

Я новичок в C++, и я пишу функцию для преобразования строки в заголовок. Я столкнулся с некоторыми проблемами.Пытается сохранить подстроку в переменной char

string title_case(string Word) 
{ 
    // Local constants 

    // Local variables 
    string Temp; 
    char c; 

    /************************** Start title_case **************************/ 

    for(int i = 0; i < Word.length(); i++) 
    { 
     c = Word.substr(i, (i + 1)); 

     if(i == 0) 
      Temp += toupper(c); 
     else 
      Temp += tolower(c); 
    } 

    return Temp; 
} 

Когда я пытаюсь скомпилировать я получаю эту ошибку

93 20 E: \ Documents \ School Work \ 4 - 2015 осень \ CSC 263 \ Неделя 4 \ Строка Lab.cpp [Error] не может преобразовать 'std :: basic_string' в 'char' при назначении

Любая идея о том, что я делаю неправильно?

+0

Вы используете класс 'string' вместо строковых символов' C * style'. –

+1

Какая часть ошибки вы не понимаете? – juanchopanza

+0

Ошибка указана в строке 'c = Word.substr (i, (i + 1))'; вы должны использовать 'c = Word [i];' вместо этого. 'string :: substr()' возвращает другую 'string'; вы пытаетесь перетащить весь объект 'string' в переменную' char'. –

ответ

0
string title_case(string Word) 
{ 
    // Local constants 

    // Local variables 
    string Temp; 
    char c; 

    /************************** Start title_case **************************/ 

    for(int i = 0; i < Word.length(); i++) 
    { 
     c = Word.at(i); 

     if(i == 0) 
      Temp += toupper(c); 
     else 
      Temp += tolower(c); 
    } 

    return Temp; 

} 

Я понял, что substr возвращает строку. Поэтому вместо этого я буду использовать функцию at, которая возвращает char.