2014-09-24 1 views
1

У меня есть текстовый файл, который мне нужно прочитать в переменных в моем коде. Например позволяет сказать, что файл .txt выглядит следующим образом:readline в C++?

John 
Town 
12 
Mike 
Village 
22 

где есть шаблон имени, то адрес, то возраст нескольких людей. Я обнаружил, что с (`)

string line; 
ifstream myfile ("example.txt"); 
if (myfile.is_open()) 
{ 
    while (getline (myfile,line)) 
    { 
     cout << line << '\n'; 
    } 
    myfile.close(); 
} 

Я могу распечатать каждую строку текстового файла, но как я мог присвоить текст переменной? Я помню, как в Java вы могли бы сделать что-то вдоль линий

while(there is a next line){ 
    name = something.readline(); 
    address = something.readline(); 
    age = something.readline(); 
    //do something with variables i.e construct new object then 
    //re-loop to construct new object with next set of data 
} 

трюка было то, что после того, как был назван Readline() было бы затем переместить вниз строку в текстовом файле, а затем следующая переменная будет назначить на текст ниже и так далее. Как я могу воссоздать это на C++?

+0

«станд :: строка имя, адрес, возраст;» 'getline (myfile, name);' 'getline (myfile, address);' 'getline (myfile, age);' –

ответ

0

Когда я делаю вещи, как это, я хотел бы структурировать свои данные в записи и написать функцию для чтения каждой записи, а так:

// logically grouped data 
struct record 
{ 
    std::string name; 
    std::string address; 
    unsigned age; 
}; 

// function to read in one record 
// returns std:ostream& so that the while() loop can check 
// the stream to make sure the read was successful. 
// Takes record as a reference to pass the data back out 
// of the function 
std::istream& read(std::istream& is, record& r) 
{ 
    std::getline(is, r.name); 
    std::getline(is, r.address); 
    is >> r.age >> std::ws; 
    return is; 
} 

int main() 
{ 
    std::ifstream myfile("example.txt"); 

    record r; 

    while(read(myfile, r)) // while the read was a success 
    { 
     // do something with record here 
     std::cout << " name: " << r.name << '\n'; 
     std::cout << "address: " << r.address << '\n'; 
     std::cout << " age: " << r.age << '\n'; 
     std::cout << '\n'; 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^