как отдельно извлекать целые числа и символы из строки
Есть строка которая лежит текстовом файле "8 9 + 1 7 - *". Как я могу получать из строки целые числа и класть их на стек к примеру? И в дальнейшем с ними оперировать. А символы получать отдельно. Если я могу только получать строку посимвольно. А если у меня в строке будут двузначные или более числа например 876 то оно разложиться по символам 8 7 6 и я не смогу его нормально извлечь.
#include <string>
#include <iostream>
#include <fstream>
#include <vector>
#include <stack>
#include <deque>
#include <algorithm>
#include <utility>
#include <iterator>
#include <cstdio>
using namespace std;
int main(){
ifstream in("input.txt");
ofstream out("output.txt");
stack <int> st;
int value, i = 0;
char ch;
string str;
while (!in.eof()) {
getline(in,str); // получил строку
}
for (int i = 0; i < str.length(); i++) {
......// бегаю по ней. Могу только получать по одному символу
}
//или без строки сразу на прямую из файла 2-ой способ
while(!in.eof()){
if(in >> value){
st.push(value);
}
if(!in.eof){
in.clear();
in.unget();
in >> ch;
}
}
// так получается, но всегда когда числовая последовательность прекращается приходится отчищать
//поток и переходить в начало потока, из-за этого получается очень медленно,
// а у меня в задаче стоит ограничение по времени.
}
Ответы (1 шт):
Автор решения: IR42
→ Ссылка
stack<int> st;
char ch;
int i;
while (in >> ch) {
// если считанный симол - цифра
if (isdigit(ch)) {
// возращаем символ в поток
in.putback(ch);
// считываем как число
in >> i;
st.push(i);
}
else {
// обработать символ ch
}
}