在文本文件“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 个回答