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

Changing string to capital letters function

本文关键字:大写字母 功能 字符串      更新时间:2023-10-16

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

这是我的尝试,出于某种奇怪的原因,它只打印出字符串的第一个单词,而不读取空格后的位。。。有什么办法吗?

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

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

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

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

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