1 Востаннє редагувалося Fox (20.11.2017 22:45:52)

Тема: Читання файлу.

Як прочитати файл по строкам ?
Тобто в циклi отримувати кожну строку з файлу, щось робити i переходити на наступну строку.
Але менi потрiбно це зробити не через стрим а через функцiонал роботи з файлами (fopen, fread...)
Як хто може то поможiть хочь що шукати.
Як це неможливо зробити без стриму то вибачаюся.

Подякували: Yola1

2

Re: Читання файлу.

Ви не повірите, але FILE - це теж потік (stream), просто функція читання там називається не operator>>, а fscanf.
А вам потрібна fgets.

Подякували: Fox, Yola2

3

Re: Читання файлу.

Ну я мав на увазi ifstream.
Бо я не вмiю користуватися тою штукою

FILE* fp = fopen("sample.txt", "r");
while (1) {
        if (fgets(line,150, fp) == NULL) break;
        i++;
        printf("%3d: %s", i, line);
}
printf("%d\n",i);

Ось знайшов.... Буду розбиратися.
Thank

4

Re: Читання файлу.

Тут все 1:1 з плюсами, тільки назви і способи звертання трохи інші.

5 Востаннє редагувалося Fox (20.11.2017 23:18:23)

Re: Читання файлу.

koala написав:

Тут все 1:1 з плюсами, тільки назви і способи звертання трохи інші.

А як fseek застосувати до ifstream ?(через це i не юзаю його)
Просто засунути його в fseek неможна.
https://i.imgur.com/0wB9Q0R.png

6

Re: Читання файлу.

is.seekg (0, is.end);//відкрутити файл is на кінець

Кажу ж - потоки практично 1:1, тільки назви методів різні.

Подякували: Fox1

7

Re: Читання файлу.

Аааааа так через точку треба було.
Ну тодi FILE i не треба)
Можна просто через ifstream модель читати.
Thank ^_^

8

Re: Читання файлу.

Ну от бачите - і чого вам вартувало почати питання з "оскільки не виходить перемотувати потоки ifstream..."
Кажу ж - не вміють у нас люди свої думки висловлювати, школи не тому вчать.

9

Re: Читання файлу.

koala написав:

Ну от бачите - і чого вам вартувало почати питання з "оскільки не виходить перемотувати потоки ifstream..."
Кажу ж - не вміють у нас люди свої думки висловлювати, школи не тому вчать.

Ну я думав може його перемотати не можна...
А знав те що можна перемотувати FILE через fseek.
Але менi треба було спочатку перемотати а тодi читати модель по строкам.
Ну тому i спитав як читати файл по строкам.

10 Востаннє редагувалося Yola (21.11.2017 08:24:58)

Re: Читання файлу.

Якщо ти можеш використати stl, то спочатку створи ifstream:

#include <fstream>
std::ifstream infile("data.txt");

Тепер ти маєш два варіанти:

Припустімо, що кожен рядок складається з двох чисел ти можеш їх читати одне за одним:

int a, b;
while (infile >> a >> b)
{
    // обробити пару (a,b)
}

Порядковий підхід

#include <sstream>
#include <string>

std::string line;
while (std::getline(infile, line))
{
    std::istringstream iss(line);
    int a, b;
    if (!(iss >> a >> b)) { break; } // помилка

    // обробити пару (a,b)
}

Перепрошую, лише зараз дочитав запитання :[

11

Re: Читання файлу.

А можете повністю завдання написати? А то ви про змію питаєте, а вам, схоже, слон потрібен :)

12 Востаннє редагувалося Fox (21.11.2017 13:02:24)

Re: Читання файлу.

koala написав:

А можете повністю завдання написати? А то ви про змію питаєте, а вам, схоже, слон потрібен :)

Та прочитати obj (модифiкований) по строкам для Directx 9.
Як дiстати з строки даннi я знаю.
fseek треба через модифiкацiю.
Там першi декiлька байт забитi iнфою про модель.

13

Re: Читання файлу.

vtorgashov написав:
koala написав:

А можете повністю завдання написати? А то ви про змію питаєте, а вам, схоже, слон потрібен :)

Та прочитати obj (модифiкований) по строкам для Directx 9.
Як дiстати з строки даннi я знаю.
fseek треба через модифiкацiю.
Там першi декiлька байт забитi iнфою про модель.

Розмір кілька гіг? Якщо ні то читати потрібно цілий файл, а строки потім відпарсити.

Подякували: Fox1