Извлечение списка строк из текстового файла

0

Я пытаюсь извлечь вектор, который содержит все строки в txt файле, используя c++, и у меня почти нет опыта. В java или matlab это было бы очень просто, все, что мне нужно сделать, это

  1. Прочитайте длинный список последовательности символов из файла txt.

  2. Прокрутите эту последовательность и извлеките строки.

В c++, кажется, есть намного больше вещей, с которыми мне приходится иметь дело, например, меня просят

  1. Добавьте новый файл заголовка c++ (.h) в мою программу и в нем объявите перечисление для различных индексов массива, которые являются релевантными.

  2. Объявите функцию разбора файла, которая принимает два параметра: ссылку на вектор стандартной библиотеки шаблонов (STL) в строках стиля c++ (например, типа vector &) и строку стиля C (типа char *);

Не для меня это слишком много. Есть ли хороший источник, чтобы получить помощь по этому поводу?

  • 0
    Да, C ++ предназначен для того, чтобы дать вам больший контроль, а C даже больше, чем C ++, а затем, конечно, Assembly больше, чем C. Вам нужно будет определить, что вы хотите использовать в качестве разделителя между каждой строкой, а затем выяснить если вы хотите читать через бинарный или текстовый. Если вы собираетесь в будущем много работать с C ++, я предлагаю вам получить книгу «C ++, Активный подход к обучению» от Рэндала Альберта и Тодда Бридлава. Это фантастическая книга, которую вы можете прочитать, не изучая C ++ в классе.
Теги:
string

2 ответа

0
Лучший ответ

Чтобы прочитать файл:

std::ifstream in("foo.txt");
std::stringstream buffer;
buffer << in.rdbuf();

После этого есть различные способы разделить содержимое, в зависимости от ваших точных требований.

  • 0
    Благодарю. Где должен храниться этот файл foo.txt, чтобы он мог быть прочитан моей программой? (Я запускаю его из командной строки, и проекция создается с использованием Visual Basic). Должно ли оно храниться в том же месте, что и каталог проекта?
  • 0
    Вы можете убедиться, что файл находится в текущем рабочем каталоге, или вы можете использовать полный путь к имени файла, например, std::ifstream in("/path/tofoo.txt");
0

Поскольку вы новичок в C++, я рекомендую вам ознакомиться с этим сайтом: http://www.cplusplus.com/

Анализ из входных файлов относительно прост, если вы используете командную строку для запуска вашей программы. Просто включите основную функцию следующим образом:

int main(int argc, char **argv)

Затем получите доступ к параметрам, переданным с использованием argv в виде массива:

var = argv[0];

Объявите массив символов, а затем используйте этот массив для захвата каждой строки файла.

char input[MAX_SIZE];
while(cin.getline(input, MAX_SIZE))
{
    //Each time this executes, input contains all characters of a line, like a string
    //e.g. make it a String and add it to a vector of type String
    //do something with input[]
}

Функция анализа синтаксиса может принимать два параметра, которые я указал в основных параметрах, но они также должны быть объявлены как параметры для основного. Затем ваша функция может захватить вход так, как я продемонстрировал.

Что касается вашего файла заголовка, я не совсем уверен, какие типы перечислений вы имеете в виду, но вы можете найти синтаксис и правила для перечисления на указанном выше сайте. Если я правильно помню, перечисления похожи на Java и C++.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню