Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / вопрос новичка / 6 сообщений из 6, страница 1 из 1
01.07.2004, 18:23
    #32586002
Нина4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос новичка
Как средствами API Windows (без MFC) построчно прочитать текстовый файл? Если можно киньте пример функции. Спасибо.
...
Рейтинг: 0 / 0
01.07.2004, 19:34
    #32586090
Lepsik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос новичка
можно и без API средствами стандартной сишной библиотеки (которая пользует API)

#define "stdio.h"

FILE *f = fopen("my_file.txt", "rt");
char *str = new char[8192];
fgets(str, 8192, f);
delete [] str;
fclose(f);
...
Рейтинг: 0 / 0
02.07.2004, 10:16
    #32586492
Нина4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос новичка
В таком случае как избавиться от конечных символов перевода строки?
...
Рейтинг: 0 / 0
02.07.2004, 10:25
    #32586522
CEMb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос новичка
забить их нулями:

Код: plaintext
strchr(stroka,'\n')[ 0 ] =  0 ;

тока лучше проверку сделать:

Код: plaintext
1.
char *psz = strchr(stroka,'\n');
if(psz) *psz =  0 ;

а если они внутри, то пробелами.
Но важно разделять хвосты строк и внутренние переходы на новую строку.
...
Рейтинг: 0 / 0
02.07.2004, 20:10
    #32587917
Анатолий Широков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос новичка
Средствами стандартной библиотеки C:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
#include <stdio.h>

int main()
{
   FILE *in = fopen("text.txt", "r");
   if( !in )
       return  1 ;

   char line[ 256 ];
   while( !feof(in) )
   {
        if( fgets(line,  256 , in) )
            puts(line);
   }
   fclose(in);
   return  0 ;
};

Средствами STL:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
#include <iostream>
#include <fstream>

int main()
{
    std::fstream in("test.txt");
    char line[ 256 ];
    while( in.getline(line,  256 ) )
    {
          std::cout << line << '\n';
    }            
    return  0 ; 
}

Если нет никаких предположений относительно длины строки, то можно использовать std::string:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
#include <iostream>
#include <fstream>
#include <string>

int main()
{
    std::fstream in("test.txt");
    std::string line;
    while( std::getline(in, line) )
    {
          std::cout << line << '\n';
    }            
    return  0 ; 
}

Удачи.
...
Рейтинг: 0 / 0
04.07.2004, 15:10
    #32588460
Нина4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос новичка
Большое всем спасибо, особенно Анатолий Широков !
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / вопрос новичка / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]