Функция преобразования строки в заглавные буквы

0

Я имею дело с некоторым упражнением, согласно которому мне нужно изменить строку, указанную на входе, в ту же строку, написанную заглавными буквами.

Вот моя попытка, по какой-то странной причине она печатает только первое слово строки, она не читает бит, который после пробела... Любые идеи, как его исправить?

#include <iostream> 
#include <string>

using namespace std; 

void uppercase(string str)
{
   locale loc; 
   for(size_t i=0; i<str.length(); ++i)
   {
      cout << toupper(str[i], loc); 
   } 
 } 

 int main(void)
 {
    string text; 
    cout << "Input text, please: " << endl;
    cin >> text; 
    uppercase(text); 
  } 

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

  • 0
    while (cin >> text) uppercase(text);
  • 0
    cin >> text; останавливает обработку на первом пустом месте.
Теги:

3 ответа

4

Конечно, используйте std::getline чтобы получить целую строку вместо одного слова. Вы почти всегда должны использовать его, на самом деле, потому что линейная ориентация - это способ, которым большинство программ берут ввод.

1

Чтение из std::cin ограничено пространством. Чтобы получить всю строку до новой строки, вам нужен std::getline.

std::getline( std::cin, text);
0
void uppercase(string str)
{
     locale loc; 
     for(size_t i=0; i<str.length(); ++i)
     {
          if(str[i] != " ")
          {
               cout << toupper(str[i], loc); 
          }
     } 
} 

Ещё вопросы

Сообщество Overcoder
Наверх
Меню