CuriousityDrivesMe Ответов: 2

Как читать только числа из входного файла в C++?


Для выполнения задания в моем классе C++ мне поручено создать код C++, который читает из файла .dat, содержащего эту информацию в том же формате:

T-Shirt:
15
Jeans:
60
Jacket:
80
Sweatshirt:
30
Hoodie:
40
Socks:
15
Discount:
10


Мне было интересно, может ли кто-нибудь объяснить мне, как написать код, который будет читать только числовые значения, а не символьные. Это было бы очень ценно.

Что я уже пробовал:

Я посмотрел вокруг на google и других форумах, и я не могу найти то, что я ищу. Мой профессор не дал нам никакой информации по этому поводу, и я прочитал назначенные главы пару раз.

PIEBALDconsult

Как вы узнаете, что вещь не является числом, если вы ее не читаете?

2 Ответов

Рейтинг:
1

Jochen Arndt

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

Если вы знаете формат файла, как в вашем случае, вы можете затем обработать каждую строку и разобрать ее в соответствии с содержимым. Существует два вида стандартных библиотечных функций C, которые могут преобразовывать целые числа из текста: Atoi-ссылка на C++ [^] и strtol-ссылка на C++ [^].

Взгляните также на левую сторону приведенных выше ссылок. Они перечисляют библиотечные функции по заголовку / задаче вверху и предоставленные функции для выбранного заголовка внизу. Вы должны ознакомиться со стандартными библиотечными функциями, чтобы знать, какие из них могут быть использованы для ваших будущих проблем.

Поскольку это задание, я не дам вам код. Но вы должны быть в состоянии продолжить с приведенной выше информацией.


CuriousityDrivesMe

Мне следовало бы быть немного более конкретным, мне нужны только числовые значения, найденные под этим элементом. Например, мне нужно прочитать "15" под футболкой. Затем отправьте его в выходной файл. dat. Я понимаю, как перенести информацию из входного файла в выходной. Но мой код продолжает читать "футболку" как числовое значение. Мне было интересно, могу ли я пропустить текст или сделать цикл, чтобы прочитать вторую строку.

Jochen Arndt

Прочтите каждую строку, пропустите четные (когда начинаете считать с нуля) и получите число из нечетных номеров строк.

Просто используйте переменную счетчика строк, которая увеличивается после обработки строки. Когда он имеет самый низкий битный набор (переменная & 1) перед инкрементом, это строка с числом.

CuriousityDrivesMe

Честно говоря, я понятия не имею, о чем вы говорите :/. Это буквально моя первая неделя в C++, и это первое лабораторное задание. Где я могу найти учебник о том, как пропускать строки...все, что я ищу в интернете, слишком сложно для меня, чтобы понять. Я определенно не хочу, чтобы вы говорили мне ответ, но если бы вы могли указать место, где я мог бы его найти, я был бы очень признателен.

Jochen Arndt

Вы читаете файл строка за строкой.
В цикле чтения, в зависимости от номера строки, ничего не делайте с текстом (пропустите) или получите номер.

CuriousityDrivesMe

Спасибо за помощь, оказывается, мне даже не нужно было делать петлю для этой проблемы. Мне просто нужно было сначала загрузить строку, а затем целое число...очень просто.

Рейтинг:
0

Patrice T

Цитата:
Мне было интересно, может ли кто-нибудь объяснить мне, как написать код, который будет читать только числовые значения, а не символьные. Это было бы очень ценно.

1) Прочитайте файл либо целиком, либо строками 1 на 1.
2) для каждой строки проверьте, есть ли номер или нет
3) если номер, делайте то, что вам нужно.


CuriousityDrivesMe

Спасибо за ответ, братан, я все понял!

Patrice T

Покажите свою работу и объясните проблемы, которые у вас есть.
Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.