Как прочитать определенное количество символов из текстового файла - PullRequest
7 голосов
/ 01 марта 2012

Я пытался сделать это следующим образом

 #include <iostream>
 #include <fstream>

using namespace std;

int main()
{
    char b[2];
    ifstream f("prad.txt");
    f>>b ;
    cout <<b;
    return 0;
}

Он должен читать 2 символа, но он читает всю строку.Это работает на другом языке, но по какой-то причине не работает в C ++.

Ответы [ 3 ]

9 голосов
/ 01 марта 2012

Вы можете использовать read() для указания количества символов для чтения:

char b[3] = "";
ifstream f("prad.txt");

f.read(b, sizeof(b) - 1); // Read one less that sizeof(b) to ensure null
cout << b;                // terminated for use with cout.
2 голосов
/ 01 марта 2012

Это работает на другом языке, но не работает в C ++ для некоторых причина.

Некоторые вещи меняются от языка к языку. В частности, в этом случае вы столкнулись с тем, что в C ++ указатели и массивы почти не отличаются. Этот массив передается оператору >> как указатель на символ, который интерпретируется как указатель на строку, поэтому он делает то же, что и буфер буфера (читается до ограничения ширины или конца строки, в зависимости от того, что наступит раньше). Ваша программа должна аварийно завершить работу, когда это произойдет, поскольку вы переполняете буфер.

0 голосов
/ 01 марта 2012
istream& get (char* s, streamsize n );

Извлекает символы из потока и сохраняет их в виде c-строки в массив, начинающийся с s.Символы извлекаются до тех пор, пока не будет извлечено (n - 1) символов или пока не будет найден символ-разделитель '\ n'.Извлечение также останавливается, если во входной последовательности достигнут конец файла или если во время операции ввода возникает ошибка.Если символ-разделитель найден, он не извлекается из входной последовательности и остается следующим извлекаемым символом.Используйте getline, если вы хотите, чтобы этот символ был извлечен (и удален).Конечный нулевой символ, обозначающий конец c-строки, автоматически добавляется в конец содержимого, хранящегося в s.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...