У меня есть файл с последовательностью 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 внутри. Подробнее: Как найти слово?
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости