Форум программистов, компьютерный форум CyberForum.ru

Как считывать все символы ofstream - C++

Восстановить пароль Регистрация
 
Глупец
23 / 23 / 1
Регистрация: 17.05.2011
Сообщений: 141
19.06.2011, 17:41     Как считывать все символы ofstream #1
Здравствуйте.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
char** m_str=new char*[10000000],*s_buf=new char[1024];
    std::ifstream ifs;
    ifs.open("text.txt");
    int i=0,ii;
    if(ifs.is_open()){
        while(ifs){
            ii=-1;
            while(s_buf[++ii]!='\n')  //<<<<<<<КОСЯК
                ifs>>s_buf[ii];
            m_str[i]=new char[ii+1];
            strcpy(m_str[i],s_buf);
            std::cout<<m_str[i]<<std::endl;
            i++;
        }
    }
    ifs.close();
так вот как собственно считать и конец строки тоже и пробелы и прочее ибо не читаемые символы эта зараза пропускает...
да и как сделать чтение ДО EOF потому что сейчас он читает ВЕСЬ поток, а мне эт не надо...
Подскажите пожалуйста.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2011, 17:41     Как считывать все символы ofstream
Посмотрите здесь:

C++ Как пропустить все символы до конца строки?
В первый массив перенести все цифры из исходного массива, во второй - все остальные символы. C++
Как объявить ofstream глобально C++
C++ Как считывать дибайты в таких типах файлов как, .png, .txt, .bgi и так далее
C++ Считывать с клавиатуры символы до тех пор, пока не введен символ "$"
Как убрать все управляющие символы из wchar_t ? C++
C++ Как должен отработать конструктор ofstream (char* file) при отсутствии файла?
Перезаписать все строки из исходного файла в новый заменив все символы 'м' на 'М' C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
19.06.2011, 18:07     Как считывать все символы ofstream #2
C++
1
2
while(s_buf[++ii]!='\n')  //<<<<<<<КОСЯК
    ifs>>s_buf[ii];
У тебя условие по ещё не считанному символу. Сначала переход к следующему, а потом его проверка.
Ну и вообще, раз нужны все символы, то getline() тебе в помощь.
Глупец
23 / 23 / 1
Регистрация: 17.05.2011
Сообщений: 141
19.06.2011, 18:17  [ТС]     Как считывать все символы ofstream #3
Спасибо, я как-то так это переписал..
C++
1
2
ii=0;
while((s_buf[ii]=ifs.get())!='\n')ii++;
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
19.06.2011, 18:29     Как считывать все символы ofstream #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Наверное, это могло бы выглядеть примерно так.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
char** m_str=new char*[10000000],*s_buf=new char[1024];
        std::ifstream ifs;
        ifs.open("text.txt");
        int i=0,ii;
        if(ifs.is_open()){
                while(ifs){
                        ifs.getline(s_buf, 1024);
                        if (0 == ifs.gcount())
                            break;
                        m_str[i]=new char[ifs.gcount()+1];
                        strcpy(m_str[i],s_buf);
                        std::cout<<m_str[i]<<std::endl;
                        i++;
                }
                ifs.close();
        }
Если вдруг встретится строка длиннее 1023 байт, считывание завершится, но здесь я не уверен.

Добавлено через 7 минут
А использование в качестве временного буфера string позволило бы не задумываться о длине строки. В разумных пределах, разумеется.
Глупец
23 / 23 / 1
Регистрация: 17.05.2011
Сообщений: 141
19.06.2011, 19:18  [ТС]     Как считывать все символы ofstream #5
Спасибо большое!
а модешь дать ссылку на какю -нибудь (для Глупцов) написанную литературу по потокам?)
Yandex
Объявления
19.06.2011, 19:18     Как считывать все символы ofstream
Ответ Создать тему
Опции темы

Текущее время: 05:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru