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()
然后对其进行计数,并在文本内容后重新建立空终止符