如何在 C++ 中将 char 分配给字符串对象?

How to assign char to string object in c++?

我正在尝试通过将单个字符分配给这样的字符串来将字符串转换为大写字母字符串:-

#include <iostream>
#include <string>
#include <cstring>
#include <cctype>
using namespace std;

int main()
{
  string a;
  getline(cin,a);
  string b;
  b.reserve(a.size()+1);
  for(int i=(a.size()),i1=0;1;i1++)
  {
    if(b[i1]!='[=10=]')
        b[i1]=(char)toupper(a[i1]);
    else
    {
        a[i1]='[=10=]';
        break;
    }
  }
  cout << b <<endl;
}

每当 运行 a.out by ./a.out 时,只有 endl 得到打印

这里是示例 运行:-

$ ./a.out 
play clash royale

$ 

我的程序有什么问题??如何将单个字符分配给字符串?

您的程序存在一些问题。主要的可能是 string reserve and string resize 之间的差异。你在程序中想要的已经有一个 a.size() 长度的字符串,所以,使用 b.resize(a.size()).

下面是一个工作版本(有更好的写法,只是与 OP 提案最一致):

#include <iostream>
#include <string>
#include <cstring>
#include <cctype>
using namespace std;

int main()
{
   string a;
   getline(cin,a);
   string b;
   b.resize(a.size());
   for(int i1=0; i1 < a.size();i1++)
   {
      if(a[i1]!='[=10=]')
          b[i1]=(char)toupper(a[i1]);
      else
      {
          b[i1]='[=10=]';
          break;
      }
   }
   cout << b <<endl;
}