int main() {
vector<int> numbers;
vector<string> strings;
string temp;
int tempint;
setlocale(LC_ALL, "rus");
string str;
ifstream ifstr("text.txt");
while (ifstr >> temp) {
if (isdigit(temp[0])) {
ifstr.clear();
ifstr.unget();
ifstr >> tempint;
numbers.push_back(tempint);
}
else {
strings.push_back(temp);
}
}
ifstr.close();
for (int i : numbers) {
cout << i << " ";
}
cout << endl;
for (string i : strings) {
cout << i << " ";
}
cout << endl;
system("pause");
return 0;
}
Функция unget() возвращает только последний считанный символ.
Более того, стандарт гарантирует возврат только одного символа. Т.е. если вы вызовите unget() десять раз - нет никакой уверенности, что в поток будут возвращено более 1 символа.
Как сказано в "Стандартной библиотеку С++" Джосаттиса, "Стандарт гарантирует правильность работы только одного вызова между двумя операциями чтения".
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости