Мне нужно выбрать номера из длинной строки - PullRequest
0 голосов
/ 28 февраля 2012

У меня есть строка около тысячи цифр в текстовом файле.Мне нужно оценивать одну цифру за раз, сравнивать ее со смежными цифрами, затем перемещаться по списку и делать это снова.Я использую C ++ и функцию get ().Вот что у меня есть:

int element[5];
ifstream file;

file.open("theNumber.txt", ios::in);
for(int i=0;i<5;i++)
{
    file.seekg(1);
    element[i]=file.get();
}
//read first 5 numbers.

Прямо сейчас мой код не будет компилироваться, и его показ заставит большинство из вас плакать, но я хотел проверить, правильна ли эта часть.Это даст мне массив с первыми пятью цифрами числа в файле?

Ответы [ 2 ]

3 голосов
/ 28 февраля 2012

Это даст мне массив с первыми пятью цифрами числа в файле?

Нет, ваш вызов seekg устанавливает позицию чтения вторым символом каждыйраз ты это называешь;просто отбросьте этот вызов (get() автоматически переводит позицию чтения).

Вам также нужно обработать текст в двоичное преобразование.Проще всего сделать так:

int ch = file.get();
if (ch < '0' || ch > '9')
{
    // Handle invalid input or EOF/error...
}
element[i] = ch - '0';
2 голосов
/ 28 февраля 2012

Это даст мне массив с первыми пятью цифрами числа в файле?

Нет, извините. Это даст вам вторую цифру файла, в пять раз больше.

Существует две версии из seekg: одна, которая устанавливает позицию указателя файла с начала, и другая, которая устанавливает его относительно некоторой другой позиции. Строка file.seekg(1); устанавливает указатель файла в абсолютную позицию 1: второй байт файла. Таким образом, ваш массив содержит одну и ту же цифру.

Подумайте об изменении 1 на i в вызове, если вы хотите использовать эту конкретную перегрузку seekg.

Удачи.


Кроме того, как отмечают Брендан и spencercw, вам все равно придется конвертировать код ASCII.

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