Как считывать слова из файла на С++?

Рейтинг: 0Ответов: 2Опубликовано: 13.05.2011

В файле находятся ФИО в виде: Имя Фамилия Отчество. Как считать Имя, Фамилию и Отчество в отдельные ячейки? Чтобы потом можно было их использовать?

Приложение - Win32 Console Application.

Ответы

▲ 5

Можешь записать фамилию имя и отчество, всё с новой строки и читать

std::ifstream file("fio.txt"); 
std::string surname, name, patronymic;
std::getline(file, surname);
std::getline(file, name);
std::getline(file, patronymic);

а если всё в одной строке, то третий параметр это разделитель

std::ifstream file("fio.txt"); 
std::string surname, name, patronymic;
std::getline(file, surname, ' ');
std::getline(file, name, ' ');
std::getline(file, patronymic, ' ');
▲ 1

Если использовать С-like style:

  1. считываем по строчке
  2. разбиваем strtok() на слова

Возможно удастся за одно действие использовать что-то в духе sscanf("%s %s %s", buf1, buf2, buf3).

Если использовать C++-like style:

  1. Используем ifstream для считывания из файла
  2. Считываем каждую строчку в string
  3. Разбираем string с помощью boost::tonenizer, иначе получите a lot of pain (много боли).

PS: конечно, можно сделать по-другому: смешать вызовы C++ и C-функций или вручную искать пробелы и их удалять из считанных строчек, но это явно не метод джедая. Иначе зачем, спрашивается, нужно использовать такой мощный язык как с++?