Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Посимвольное чтение std::ifstream


Автор: andrew_121 30.7.2008, 11:32
Как посимвольно читать файл std::ifstream используя итераторы?

Автор: vinter 30.7.2008, 12:12
никак, итератор вызывает <<

Автор: Alek86 30.7.2008, 12:13
это в строку
Код
std::ifstream f("file.txt");
std::string fileData((std::istreambuf_iterator<char>( f )),(std::istreambuf_iterator<char>()) );

для вектора какой-то другой итератор нужен

Автор: andrew_121 30.7.2008, 12:20
Alek86 - Я так понял, что сразу весь файл читается в fileData. Это нормально? А если файл Очень большой?

Автор: Alek86 30.7.2008, 12:29
а что тебе нужно?

Автор: andrew_121 30.7.2008, 12:36
Alek86 - Посимвольно читать текстовый файл при помощи итератора.

Автор: Alek86 30.7.2008, 12:38
ну вот есть у тебя итератор
Код
std::istreambuf_iterator<char>( f )

считыывай как хочешь smile

Автор: vinter 30.7.2008, 12:43
Цитата(Alek86 @  30.7.2008,  13:13 Найти цитируемый пост)
для вектора какой-то другой итератор нужен 

этот пойдет

Цитата(andrew_121 @  30.7.2008,  13:36 Найти цитируемый пост)
Alek86 - Посимвольно читать текстовый файл при помощи итератора. 

да нельзя посимвольно файл чиатть с помощью потоков. как он по твоему отличит 'а' от всего остального в слове "арбуз"?

Автор: andrew_121 30.7.2008, 13:00
Понял.
Всем СПАСИБО.

Автор: Alca 30.7.2008, 21:13
Код

bool bReadFile(const std::string &csFilePath) {
    std::ifstream fin(csFilePath.c_str());    
    if (!fin) {
        return false;
    }
    char ch;     
    while (fin.get(ch)) { 
        std::cout << ch;
    }
    fin.close();    
    return true;
}

Автор: andrew_121 30.7.2008, 22:13
Alca - Спасибо. Но мне нужен итератор, чтоб передать как аргумент.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)