Как я могу разобрать входной файл?
Я просто не могу понять, как читать из файла. Вот этот файл:
Случайный Размер: 3
Количество Человек: 2
0::Персона1::2::0
1::Персона2::2::2
Кто-нибудь может мне помочь, пожалуйста?
А вот какой мусор я сделал:
Что я уже пробовал:
std::pair<int, std::vector<Person *> *> parseFileWithName(const std::string& filename){ int bsiz; int pc; std::ifstream fil(filename); std::vector<Player *> *ow; if(fil.is_open()){ std::string line,np1,np2,np3,np4; int bsiz; int pc; std::getline(filename,line); std::istringstream lili(line); lili>>np1>>np2>>bsiz; std::getline(filename,line); std::istringstream pf(line); pf>>np3>>np4>>pc; while(pc!=0){ std::getline(filename,line); std::string type,nt,ny,nu; uint id; int xco; int yco; std::istringstream lineStream(line); std::getline(lineStream,id,':'); std::getline(lineStream,nt,':'); std::getline(lineStream,type,':'); std::getline(lineStream,ny,':'); std::getline(lineStream,xco,':'); std::getline(lineStream,nu,':'); lineStream>>yco; Person *p1=new Person(id,xco,yco); ow->push_back(p1); pc--; } } std::pair<int, std::vector<Person *> *> pp(bsiz,ow); return pp; }
Richard MacCutchan
Неясно, что вы пытаетесь сделать, или в чем ваша проблема. Но одним из способов было бы прочитать каждую строку и разделить ее на маркеры. Другой метод заключается в использовании перегрузки >> (Как вы сделали выше) для получения отдельных полей. Затем вы можете обработать каждый токен/поле по мере необходимости. Кроме того, попробуйте использовать значимые имена для переменных, чтобы было ясно, что они должны представлять.