C++ 保存未知数量的int和char输入
嗨,我正在尝试保存未知数量的char和int输入,然后将它们填充到一个名为push的函数中,但我意识到我使用的方法将int save的输入从例如13更改为1和3。因此,我想问,是否还有其他方法可以做到这一点?感谢和抱歉的NOOB QN问我刚开始在C++。C++ 保存未知数量的int和char输入,c++,char,save,int,C++,Char,Save,Int,嗨,我正在尝试保存未知数量的char和int输入,然后将它们填充到一个名为push的函数中,但我意识到我使用的方法将int save的输入从例如13更改为1和3。因此,我想问,是否还有其他方法可以做到这一点?感谢和抱歉的NOOB QN问我刚开始在C++。 char input; int inNum; Stack st; cout << "Enter an expression: " << endl; while(cin >
char input;
int inNum;
Stack st;
cout << "Enter an expression: " << endl;
while(cin >> input)
{
if (input != '+' && input != '-'
&& input != '/' && input != '*'
&& input != '=')
{
inNum = input - '0';
cout << inNum << endl;
st.push(inNum);
}
}
char输入;
内因努姆;
斯塔克街;
cout(输入)
{
如果(输入!='+'&&input!='-'
&&输入!='/'&输入!='*'
&&输入!='='))
{
inNum=输入-'0';
cout我相信您可以利用
中的isdigit
和putback
的istream
功能来完成解析技术
char c;
int i;
while(cin >> c) {
if(isdigit(c)) {
cin.putback(c);
cin >> i; //read my integer
}
else {
//handle operator
}
}
在阅读之前,您还可以使用peek
函数查看下一个字符。如果它是数字,则像正常情况一样进行解析。使用此函数时手动忽略空白。如果不了解更多输入信息,则很难说,但如果您的输入仅包含数字和运算(+、-、*、/、=),则只需最少的修改,即可执行以下操作:
string numBuffer;
while(cin >> input)
{
if (input != '+' && input != '-'
&& input != '/' && input != '*'
&& input != '=')
{
temp += input;
} else {
st.push(atoi(numBuffer.c_str()));
numBuffer = "";
}
}
当你读入字符时,只要你还没有读入一个操作,你就在建立一个数字字符串,只有当你读入一个操作时,你才知道你有一个完整的数字。如果你读入了一个数字,只需将它连接到前一个数字上——如果之前有一个,那么就可以存储它。这样,如果你有13+1
,它会先找到1
,然后找到3
,但之前找到的是一个数字,所以它变成了13
。然后你找到+
,所以你把13
存储在某个地方(向量或其他形式).Etc对于初学者,如果输入应该读取字符,那么它应该是一个char
对不起,我犯了一个打字错误。表达式有特定的形式吗?还是应该是一个通用表达式解析器?表达式类似于1+2+3/4+5*6之类的