C++에서 형식을 변환하는 데 문제가 있습니다. 나는 표현식을 가지고 있습니다 : string wholeExpression = "44*2";
그리고 나는 사업자로부터 숫자를 분리하고 싶습니다. 이 숫자 인 경우문자열을 char로 변환
string subExpression;
char skladnik;
subExpression = wholeExpression.substr(poczatek, lenght);
skladnik = subExpression[0];
: 그것은 운영자 인 경우 , 나는이 코드 부분을 사용
subExpression = wholeExpression.substr(poczatek, lenght);
skladnik = atoi(subExpression.c_str());
@EDIT
switch (skladnik)
{
case '+':
case '-':
{
while (topOfStack > 0 && stack[topOfStack - 1] != '(')
{
outPut += stack[topOfStack - 1] + przecinek;
stack.resize(topOfStack - 1);
topOfStack--;
}
stack += skladnik;
topOfStack++;
break;
}
case '/':
case '*':
{
while (topOfStack > 0 && (stack[topOfStack - 1] == '*' || stack[topOfStack - 1] == '/'))
{
outPut += stack[topOfStack - 1] + przecinek;
stack.resize(topOfStack - 1);
topOfStack--;
}
stack += skladnik;
topOfStack++;
break;
}
case '(':
{
stack += skladnik;
topOfStack++;
break;
}
case ')':
{
while (stack[topOfStack - 1] != '(')
{
outPut += stack[topOfStack - 1] + przecinek;
stack.resize(topOfStack - 1);
topOfStack--;
}
if (stack[topOfStack - 1] == '(')
{
stack.resize(topOfStack - 1);
topOfStack--;
}
break;
}
default:
{
outPut += to_string(skladnik) + przecinek;
break;
}
}
}
하지만 갑자기 나는 문제가 생겼어요 연산자는 (ASCII 코드로) 40 ~ 43 및 45 ~ 47의 숫자로 구성됩니다. 아마도 스위치가 숫자가 아니라 오파 레이트로 해석 할 것입니다. 다른 숫자는 완벽하게 작동합니다. 이 문제를 어떻게 해결할 수 있습니까?
대신 실제 '스위치'를 게시 할 수 있습니까? 의사 코드 대신 구현을 보는 것이 훨씬 쉬울 것입니다. –
나는 그게 tl이라고 말할 것이라고 생각했다; 그래서 내가 더 짧게하려고했습니다. – Mikkey
이러한 문제를 해결하는 올바른 도구는 디버거입니다. 스택 오버플로를 묻기 전에 코드를 단계별로 실행해야합니다. 자세한 도움말은 [작은 프로그램 디버깅 방법 (Eric Lippert 작성)] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)을 참조하십시오. 문제를 재현하는 [최소, 완료 및 확인 가능] (http://stackoverflow.com/help/mcve) 예제와 함께 해당 질문을 \ [편집]해야합니다. 디버거. –