Самый быстрый способ прочитать файл построчно с произвольным количеством символов в каждом - PullRequest
3 голосов
/ 11 ноября 2009

Хорошо, я пытаюсь выяснить, какой способ будет быстрее читать текстовый файл, с которым я работаю. Содержимое файла выглядит так

1982 3923 3542 4343
2344 3453 2
334 423423 32432 23423

Это просто произвольное число чисел типа int, и мне нужно читать построчно. Было бы лучше использовать getline или оператор вставки (>>)? Лично я думаю, что было бы намного проще реализовать это с помощью оператора вставки, но я не знаю, как бы я сделал программу так, чтобы она считывала все числа int в одной строке, пока не достигнет конца. Я думал о том, чтобы настроить его следующим образом:

ifstream input;
input.open("someFile.txt");
if (input) {
    char* ch;
    while (ch != '\n\)
        getline(input, buffer, ' ')

Единственная проблема заключается в том, что мне нужно выполнить преобразование в int, а затем поместить каждое int в массив. Моя конечная цель состоит в том, чтобы создать двумерный массив, в котором каждая строка целых чисел является массивом целых чисел. Любые предложения относительно лучшей реализации приветствуются!

Ответы [ 2 ]

5 голосов
/ 11 ноября 2009

Я бы сказал очень просто:

ifstream in(...);
string line;
while (getline(in, line)) {
    istringstream line_in(line);
    while (line_in) {
        int val = 0;
        if (line_in >> val) {
            // Do something with val
        }
    }
    // eol
}
2 голосов
/ 11 ноября 2009
  1. Чтобы получить правильный ответ, вам нужно будет провести тестирование.
  2. Скорость выполнения двух функций определяется реализацией. Вы можете получить разные результаты на разных компиляторах.
  3. Самый быстрый способ сделать это, вероятно, использовать пользовательский конечный автомат. Но они примерно так же нечитаемы, как и вы.

Сначала введите правильный код. Затем настройте его, если потребуется позже.

...