Как читать файл построчно и игнорировать комментарии? - PullRequest
0 голосов
/ 14 января 2020

У меня есть текстовый файл, состоящий из

//range of X
X=1-5

//range of Y
Y=1-5

Как мне прочитать файл, чтобы он игнорировал комментарии и пустые строки и получил вывод:

X = 1-5

Y = 1-5

int main(){

    string fileName,X;
    cout << "Please enter filename: " ;
    cin >> fileName;


    ifstream infile;    
    infile.open(fileName);  

        if (!infile){       
            cerr << "Error opening : " << fileName << ", file does not exist" << endl;
            return -1;      
        }


    while(getline(infile, X)){
        cout << X;
    }

    infile.close();
    return 0;
}

Ответы [ 2 ]

1 голос
/ 14 января 2020

Согласно вашему вопросу, комментарии всегда в отдельных строках с использованием оператора "//".

if(X.size() == 0 || (X.size() >= 2 && X[0] == '/' && X[1] == '/')){
     continue;
}
0 голосов
/ 14 января 2020

Заменить

while(getline(infile, X)){
    cout << X;
}

На

while(getline(infile, X)){
    if((X.size() >=2 && X.substr(0,2) != "//") && X.find_first_not_of(' ') == X.npos) cout << X;
}

Правка для сохранения двух строк:

Замените while на следующие

vector<string> twoStrings;
while(getline(infile, X)){
if((X.size() >=2 && X.substr(0,2) != "//") && X.find_first_not_of(' ') == X.npos)
    {
        cout << X;
        twoStrings.push_back(X);
    }
}
//Now the first line is stored in twoStrings[0] and the second line is stored in twoStrings[1]
...