C++ 代码中的意外值以及如何修复它

C++ 代码中的意外值以及如何修复它,c++,string,C++,String,我的任务: 老师写下了多个数字的和。学生们应该计算总数。为了简化计算,总和只包含数字1、2和3。不过,这对Xenia来说还不够。她才刚开始计数,所以只有当总和按非递减顺序排列时,她才能计算总和。例如,她不能计算和1+3+2+1,但她可以计算和1+1+2和3+3 你得到了写在黑板上的总数。重新排列传票并打印金额,以便Xenia可以计算金额 输入 第一行包含一个非空字符串s—Xenia的总和需要计数。字符串s不包含空格。它只包含数字和字符“+”。此外,字符串s是数字1、2和3的正确和。字符串s的长度

我的任务:

老师写下了多个数字的和。学生们应该计算总数。为了简化计算,总和只包含数字1、2和3。不过,这对Xenia来说还不够。她才刚开始计数,所以只有当总和按非递减顺序排列时,她才能计算总和。例如,她不能计算和1+3+2+1,但她可以计算和1+1+2和3+3

你得到了写在黑板上的总数。重新排列传票并打印金额,以便Xenia可以计算金额

输入 第一行包含一个非空字符串s—Xenia的总和需要计数。字符串s不包含空格。它只包含数字和字符“+”。此外,字符串s是数字1、2和3的正确和。字符串s的长度最多为100个字符

输出 打印Xenia可以计算的新金额

示例: 输入

3+2+1
输出

1+2+3
以下是我的解决方案:

#include<string>
#include <iostream>
using namespace std;
int main()
{

    string su ;
    cin >> su;
    int n, temp ;
    n = su.size();


    for (int i = 0 ; i < n ; i+=2)
    {
        if (su[i]=='1')
        {
            su[i]-='0';
        }
        else if (su[i]=='2')
        {
            su[i]-='0';
        }
        else if ( su[i]== '3')
        {
            su[i]-='0';
        }
    }

    for (int i =0 ; i <n ; i+=2)
    {
        for(int j = 0 ; j< n; j+=2 )
        {
            if (su[i]< su [j])
            {
                temp = su[i];
                su[i]=su[j];
                su[j]=temp;
            }
        }
    }
    for(int i = 0 ; i < n ; i++)
    {
        if(su[i]=='+')
        {
            cout<<su[i];
        }
        else
            cout<<su[i];//this is the line I can't understand why the result like that;
    }


}
#包括
#包括
使用名称空间std;
int main()
{
弦素;
中国>>苏;
温度;
n=su.size();
对于(int i=0;i对于(int i=0;i首先执行s[i]='0'非常危险,因为它是一个字符串,您应该改为执行int myNum=s[i]-'0',然后尝试将其存储在字符串中,因为执行s[i]-='0'它永远不会被转换成整数,但它始终是字符,因此如果你不将它转换成整数,它将变成ascii码'1'-'0'好的,那是1,哪个符号的ascii码是1?哦,它是SOH字符…它接受SOH字符并将其放入字符串中,但字符串不知道什么是SOH,所以就这样???…(只是开玩笑,弦没有感情)所有的笑话都可能是由于你试图在字符串中存储非法字符引起的。我会把“1”-“0”转换成int。然后将它存储在一个字符串中。< /p>使用<代码> cOut@ ANASTACIU。这是一个很好的工作。但是这个函数是什么?它是C++样式的,它有点类似于<代码>(int)SU[i]。
,但使用起来比较安全。您的算术运算会给您代码为1、2和3的不可打印字符,您需要将它们转换为
int
,以获得它们的整数值。@anastaciu我知道了,谢谢。您是对的。这对我来说是非常有用的信息。谢谢您的帮助。