C++ 为什么不能使用索引地址修改我的字符串

C++ 为什么不能使用索引地址修改我的字符串,c++,string,C++,String,当我使用索引[]修改postifix字符串时,它不会更改字符串,而是 使用诸如+=之类的运算符可以成功修改字符串 void InToPost(string infix) { int i=0,j=0; int len=infix.size(); string postfix; while(infix[i]!='\0') { cout<<postfix<<endl; if(i

当我使用索引
[]
修改postifix字符串时,它不会更改字符串,而是 使用诸如
+=
之类的运算符可以成功修改字符串

void  InToPost(string infix)
{
    int i=0,j=0;
    
    int len=infix.size();
    string postfix;
    
    while(infix[i]!='\0')
    { 
        cout<<postfix<<endl;   
        if(isOperand(infix[i]))

         postfix[j++]=infix[i++];//Here is the problem

         
         else
         {
           if(precedence(infix[i])>precedence(top->data))
           
               push(infix[i++]);
                    
            else
            {
               postfix[j++]= pop(); //Here is the problem
                
            }
            
            
         }      
        
    }

    
    while(top!=NULL)
        postfix[j++]= pop(); //Here is the problem
        

    
    cout<<postfix;//Here i am outputting the string  
}
void-intospost(字符串中缀)
{
int i=0,j=0;
int len=infix.size();
字符串后缀;
while(中缀[i]!='\0')
{ 

cout你不能仅仅通过在
std::string的末尾写入一个索引来扩展它(也不应该覆盖终止的null,它会自动将空
[0]
字符串置于
):即
postfix[j++]=xxx;
被破坏。试试
postfix+=infix[i++];
(或任何您想要追加的内容)相反:当您这样做时,它会检查是否有足够的容量(即保留内存)以获得更多内存(如果需要),并跟踪附加字符,以便
.size()
然后对其进行计数,并在文本内容后重新建立空终止符