c++ - 为什么显示垃圾值?

标签 c++ sorting garbage

用户输入一个字符串,例如“3 + 2 + 1”或“1 + 3 + 2 + 1 + 3 + 1”。我只需要对字符串进行排序。但是在4-5个测试用例之后出现错误。

Input  - 2
Output - �

Input  - 2+1+2+2+2+3+1+3+1+2
Output - �+1+1+1+2+2+2+2+2+3
#include<iostream>
using namespace std;

int main()
{

    string s;
    cin>>s;

    for(int i=0;i<s.size();i+=2)
    {
        for(int j=0;j<(s.size()-i);j+=2)
        {
            if(s[j]>s[j+2])
            {
                swap(s[j],s[j+2]);
            }
        }
    }

    cout<<s;
    return 0;
}

最佳答案

正如ggorlen所说,由于您正在访问一个超出范围的值,因此出现了垃圾。进行任何交换之前,请尝试检查您的“j”索引加2是否超出范围。

#include<iostream>
using namespace std;

int main()
{

    string s;
    cin>>s;

    for(int i=0;i<s.size();i+=2)
    {
        for(int j=0;j<(s.size()-i);j+=2)
        {
            if(j+2 < s.size() && s[j]>s[j+2])
            {
                swap(s[j],s[j+2]);
            }
        }
    }

    cout<<s;
    return 0;
}
输入2+1+2+2+2+3+1+3+1+2输出1+1+1+2+2+2+2+2+3+3

关于c++ - 为什么显示垃圾值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63628024/

相关文章:

sorting - 按值对 Tcl 字典排序

java - 复制构造函数创建垃圾对象

c++ - 它会调用哪个函数?

C++ 随机图生成器库

c# - 使用空日期时间对 DataGridView 进行排序

c - 使用宏对 3 个数字进行排序 [C]

c++ - 声明具有特定大小并插入元素的 vector<vector<pair<int, int>>?

python - 指向外部托管的 C++ 智能指针(例如 : Python) resources?

c - 为什么我在这个程序中使用指针时会得到垃圾? C语言

linux - Linux 内核模块中的字符串操作