我编写了一个将char类型的数字转化为int类型的。但是当我把scanf输入换为cin时,所有入栈的数都变为1个了,这是为什么呢?
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a;
char ch;
stack<int> st;
while(1)
{
cin >> ch;
if(ch == '@')
{
break;
}
if(ch >= '0' && ch <= '9')
{
a = ch - '0';
while(cin >> ch)
{
if(ch >= '0' && ch <= '9')
{
a *= 10;
a += ch - '0';
}
else
{
break;
}
}
st.push(a);
}
while(st.size())
{
cout << st.top() << endl;
st.pop();
}
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a;
char ch;
stack<int> st;
while(1)
{
cin >> ch;
if(ch == '@')
{
break;
}
if(ch >= '0' && ch <= '9')
{
a = ch - '0';
while(scanf("%c",&ch))
{
if(ch >= '0' && ch <= '9')
{
a *= 10;
a += ch - '0';
}
else
{
break;
}
}
st.push(a);
}
while(st.size())
{
cout << st.top() << endl;
st.pop();
}
}
return 0;
}
但是scanf就不会出错。
会不会是输入的问题,你正常输入别换行,cin 它不会把回车符(\n)算进字符串中,所以才导致了并列输出