У меня есть файл с последовательностью int
чисел. Необходимо в цикле считывать по одному числу, чтобы проводить с ним манипуляции. В документации сказано, что метод in.get()
возвращает int_type
. Что этот тип означает?
std::ifstream in("in.txt");
std::cout << in.get(); // печатает код первого символа файла, а надо первое число
Похоже, что числа в Вашем файле хранятся в текстовом представлении и Вы неправильно их считываете. Фактически, Вы читаете текстовый файл посимвольно, получая числовой код прочитанных символов. Вместо этого нужно читать до первого пробельного символа и преобразовывать полученную строку в целое число. Для этого можно воспользоваться оператором чтения из потока.
#include <iostream>
#include <fstream>
int main(int argc, char *argv[])
{
std::ifstream in("in.txt");
if (in.is_open()) {
int i;
while (in >> i) {
std::cout << i;
}
}
}
in.get()
это аналог getchar()
-- читает отдельные символы (char) из потока. Метод возвращает int_type
вместо char_type
, чтобы была также возможность вернуть индикатор конца файла (eof).
Чтобы числа в вектор скопировать из текстового файла, можно istream_iterator использовать:
#include <algorithm> // copy
#include <iostream>
#include <iterator>
#include <vector>
int main()
{
std::istream_iterator<int> numbers(std::cin), eof;
// копируем по одному числу из ввода в вывод
// std::copy(numbers, eof, std::ostream_iterator<int>(std::cout, "\n"));
// или в вектор можно сохранить для дальнейшей обработки
std::vector<int> a(numbers, eof);
std::copy(a.begin(), a.end(), std::ostream_iterator<int>(std::cout, "\n"));
}
istream_iterator<int>(in)
использует аналог in >> i
внутри. Подробнее: Как найти слово?
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть функция вывода поддерживаемых процессором инструкций в консольПомогите переделать чтобы сохранялось в файлик