mardi 3 août 2021

Pushing back a vector gives absurd results (C++)

Hello so I've seen some other posts about it but they never seem to solve my issue, or I just can't understand it with my peanut sized brain. If I input something, and push it back to the vector, it would always have some stupidly absurd number(s)

For those who want context or in case it's outside of what I think is the problem, here's the full code:

#include <iostream>
#include <string>
#include <array>
#include <algorithm>
#include <vector>

using namespace std;

void stringToVec(string input, vector<int> output)
{
    int e = 0;
    string temp;

    //cout << "size: " << input.size() << '\n';

    for(int i = 0; i < input.size(); i++)
    {
        if(input[i] != ' ')
        {
            temp += input[i];
        }
        else if(input[i] == ' ')
        {
            int num = stoi(temp);

            output.push_back(num);
            temp = ""; // clear temp
        }
    }
}

int main()
{
    int a, b;
    string numsIn1, numsIn2;

    cin >> a;
    cin >> ws;
    getline(cin, numsIn1);

    numsIn1 += ' ';
    int nums1[a];
    // =======================
    cin >> b;
    cin >> ws;
    getline(cin, numsIn2);

    numsIn2 += ' ';
    int nums2[b];
    // =======================
    vector<int> output;

    stringToVec(numsIn1, output);
    stringToVec(numsIn2, output);

    int e = 0;

    for(int i = 0; i < a; i++)
    {
        output.push_back(nums1[i]);
    }
    for(int i = 0; i < b; i++)
    {
        output.push_back(nums2[i]);
    }

    sort(output.begin(), output.end());

    //int dyfslashj[3] = {3, 2, 1};

    for(int i = 0; i < a + b; i++)
    {
        cout << output[i] << ' ';
    }

    return 0;
}

Here's the line thats most likely to be the problem. For example if I input the number "3 4 2" the vector would be like "5234523452345 32452 34523", or some absurd value

void stringToVec(string input, vector<int> output)
{
    int e = 0;
    string temp;

    //cout << "size: " << input.size() << '\n';

    for(int i = 0; i < input.size(); i++)
    {
        if(input[i] != ' ')
        {
            temp += input[i];
        }
        else if(input[i] == ' ')
        {
            int num = stoi(temp);

            output.push_back(num);
            temp = ""; // clear temp
        }
    }
}

Aucun commentaire:

Enregistrer un commentaire