I'm currently writting a program where I try to filter extra spaces so if there are more than 1 spaces in a row, I discard the rest leaving only one
But this is only the first step because the aim of the program is to parse a txt file with mips assembly instructions.
So far I've opened the file, stored the content in a vector and then stored the vector content in an array. Then I check, if you find a char 2 times in a row shift the array to the left.
The problem is that the code works well for any other letter, except for the space character. (On the code below I test it with the 'D' character and it works)
#include <iostream>
#include <cmath>
#include <fstream>
#include <cstdlib>
#include <vector>
#include <algorithm>
using namespace std;
class myFile {
    vector<string> myVector;
public:
    void FileOpening();
    void file_filter();
};
void myFile::FileOpening() {
    string getcontent;
    ifstream openfile;     //creating an object so we can open files
    char filename[50];
    int i = 0;
    cout << "Enter the name of the file you wish to open: ";
    cin.getline(filename, 50);   //whatever name file the user enters, it's going to be stored in filename
    openfile.open(filename);     //opening the file with the object I created
    if (!openfile.is_open())       //if the file is not opened, exit the program
    {
        cout << "File is not opened! Exiting the program.";
        exit(EXIT_FAILURE);
    };
    while (!openfile.eof())             //as long as it's not the end of the file do..
    {
        getline(openfile, getcontent);     //get the whole text line and store it in the getcontent variable
        myVector.push_back(getcontent);
        i++;
    }
}
void myFile::file_filter() {
    unsigned int i = 0, j = 0, flag = 0, NewLineSize, k, r;
    string Arr[myVector.size()];
    for (i = 0; i < myVector.size(); i++) {
        Arr[i] = myVector[i];
    }
    //removing extra spaces,extra line change
    for (i = 0; i < myVector.size(); i++) {
        cout << "LINE SIZE" << myVector[i].size() << endl;
        for (j = 0; j < myVector[i].size(); j++) {
            //If I try with this character for example,
            //it works (Meaning that it successfully discards extra 'Ds' leaving only one.
            // But if I replace it with ' ', it won't work. It gets out of the loop as soon
            //as it detects 2 consecutive spaces.
            if ((Arr[i][j] == 'D') && (Arr[i][j + 1] == 'D')) {
                for (k = j; k < myVector[i].size(); k++) {
                    Arr[i][k] = Arr[i][k + 1];
                    flag = 0;
                    j--;
                }
            }
        }
    }
    for (i = 0; i < myVector.size(); i++) {
        for (j = 0; j < myVector[i].size(); j++) //edw diapernw tin kathe entoli
        {
            cout << Arr[i][j];
        }
    }
}
int main() {
    myFile myfile;
    myfile.FileOpening();
    myfile.file_filter();
}
My question is, why does it work with all the characters except the space one, and how do I fix this? Thanks in advace.
 
     
    