Сохранение всех строк из файла в массив строк - PullRequest
0 голосов
/ 20 сентября 2019

У меня следующий код для построчного чтения текстового файла и сохранения данных в переменной string*:

#include <string>
#include <fstream>
#include <iostream>
using namespace std;

int main(){
    // open a file in read mode.
   ifstream infile; 
   infile.open("iris.csv"); 

    // read file line by line and store here: 
    string *strlist; 
    int count =0; 
    for (string line; getline(infile, line); ) {
        strlist[count] = line; 
        count++; 
    }
    infile.close(); 
    //print all lines: 
    for (int i=0; i<count; i++){
        cout << strlist[i];
    }
}

Будет работать выше или возникнет проблема с памятью.Нужно ли делать строку new перед присвоением значения strlist[i]=line?

Я не пробовал, опасаясь, что ошибка может привести к повреждению данных.Спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 20 сентября 2019

Хорошим вариантом является использование вектора.

#include <string>
#include <vector>
#include <fstream>
#include <iostream>
using namespace std;

int main(){
    // open a file in read mode.
   ifstream infile; 
   infile.open("iris.csv"); 

    // read file line by line and store here: 
    vector<string> strlist; 

    for (string line; getline(infile, line); ) {
    //or
    //while (getline(infile, line)) {
        strlist.push_back(line); 
    }
    infile.close(); 
    //print all lines: 
    for (int i=0; i<strlist.size(); i++){
        cout << strlist[i];
    }
}
0 голосов
/ 20 сентября 2019

Я думаю, что если вы хотите загрузить файл все за один раз в c ++, он должен разрушить вашу память.просто прочитайте одну строку и сделайте что-нибудь на ней или сделайте счетчик, чтобы запомнить, сколько вы загрузили. После того, как вы закончите одну часть, перейдите к следующей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...