将字符串更改为大写字母功能

时间:2014-09-09 10:29:56

标签: c++

我正在处理一些练习,根据这些练习,我必须将输入上给出的字符串更改为相同的字符串,用大写字母书写。

这是我的尝试,由于一些奇怪的原因,它只打印出字符串的第一个字,它不会读取空格后的位... 任何想法如何解决它?

#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); 
  } 

我知道可能有不同的方法来解决这个问题,但我想坚持我的方法。任何潜在的错误?

3 个答案:

答案 0 :(得分:4)

当然,使用std::getline获取整行而不是一个单词。实际上,你应该总是使用它,因为面向行是大多数程序输入的方式。

答案 1 :(得分:1)

std::cin读取是以空格分隔的。为了使整个字符串更新到新行,您需要std::getline

std::getline( std::cin, text);

答案 2 :(得分:0)

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