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

Бесконечное чтение - C++

Восстановить пароль Регистрация
 
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
23.04.2013, 00:15     Бесконечное чтение #1
Доброго всем времени суток. Я уже давно рыскаю по гуглу, форуму и книгам, но меня все же мучит вопрос: а как вот так взять и прочитать из файла неограниченное количество текста любого формата без использования конкатенации "ручками"? Почему в делфи можно читать в string сколько влезит, а в с++ нельзя, хотя возможностей у плюсов в этом плане должно быть больше?

Добавлено через 31 секунду
Если я выразился как-то некорректно, то поправьте меня или уточните) Рад всем ответам)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2013, 00:15     Бесконечное чтение
Посмотрите здесь:

Бесконечное суммирование C++
C++ Чтение
Чтение из БД C++
C++ Написать цикл (перечисление от 10 до 0 повторялось бесконечное количество раз)
чтение C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IrineK
Заблокирован
23.04.2013, 00:30     Бесконечное чтение #2
Согласно http://www.cplusplus.com/reference/s...ring/max_size/
максимальная длина строки: 4294967291

Не бесконечность, конечно, но ... более чем достаточно )
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11800 / 6779 / 765
Регистрация: 27.09.2012
Сообщений: 16,829
Записей в блоге: 2
Завершенные тесты: 1
23.04.2013, 00:30     Бесконечное чтение #3
Цитата Сообщение от metaluga145 Посмотреть сообщение
а как вот так взять и прочитать из файла неограниченное количество текста любого формата без использования конкатенации "ручками"
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <iomanip>
#include <fstream>
#include <cstring>
char * findchar(char * str, char ch){
    for(;*str;++str)
        if (*str==ch) return str;
    return NULL;
}
 
 
int main(){
    std::ifstream file("input.txt",std::ios_base::binary);
    file.seekg(0,std::ios::end);
    int txtlen=file.tellg();
    file.seekg(0,std::ios::beg);
    char * txt=new char[txtlen+1];
    file.read(txt,txtlen);
    txt[txtlen]=0;
    char fstr[]="mceyu.lkgh";
 
    int slen=strlen(fstr);
    int * countchar=new int[slen];
    memset(countchar,0,slen*sizeof(*countchar));
    for(char *p=txt,*pf;*p;++p){
        if (pf=findchar(fstr,*p)) {
            ++(countchar[pf-fstr]);
        }
    }
    std::cout<<"Text:\n"<<txt;
    std::cout<<"\nFind:\n"<<fstr<<std::endl;
    for(int i=0;i<slen;++i){
        std::cout<<"Char "<<fstr[i]<<std::setw(5)<<countchar[i]<<std::endl;
    }
    delete [] countchar;
    delete [] txt;
    std::cin.get();
    return 0;
}
На подобии этого?

Не по теме:

бесконечность понятие растяжимое

metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
23.04.2013, 00:33  [ТС]     Бесконечное чтение #4
Croessmah, ну тут вроде есть неявная конкатенация...

Добавлено через 46 секунд
IrineK, и с помощью чего читать в стринг без ограничения и указания размера буфера?
IrineK
Заблокирован
23.04.2013, 01:51     Бесконечное чтение #5
IrineK, и с помощью чего читать в стринг без ограничения и указания размера буфера?
getline:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <sstream>
#include <fstream>
 
using namespace std;
 
int main()
{   string S;
    
    fstream F ("license.txt", fstream::in);
    if(!F)  exit(1);
    
    getline(F,S,'\0');
    cout<<S;
    
    cin.get();
    return 0;
}
Миниатюры
Бесконечное чтение  
Yandex
Объявления
23.04.2013, 01:51     Бесконечное чтение
Ответ Создать тему
Опции темы

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