2015-06-26 2 views
0

Я работаю над проектом для преобразования из постфикса в инфиксные выражения. Я застрял на некоторое время, но у меня была часть его работы, тогда я понял, что мне нужно было выделить пространство между каждым из операндов, когда я ввожу его пользователю. Я не уверен, как взять строку и не включать пробелы как бы я это сделал. getline не работает, так как включает пробелы. поэтому вместо ab + мне нужно принять его как: a b +. Я не уверен, как это сделать, не включая строки. Вот мой код до сих пор.Как взять строку в качестве входных данных, а не включать пробелы

#include "stack.h" 

void convert(string expression){ 

    stack c; 

    string post =" "; 
    string rightop=""; 
    string leftop=""; 
    string op =""; 

    for (int i =0; i<=expression.length()-1;i++){ 
     c.push(expression[i]); 
     c.print(); 

     if (expression[i] == '*' || 
      expression[i] == '+' || 
      expression[i] == '-' || 
      expression[i] == '/'){ 
      cout<<c.top()<<endl; 
      leftop=c.top(); 
      cout<<leftop<<endl; 

      c.pop(); 


      rightop=c.top(); 
      cout<<rightop<<endl; 
      c.pop(); 
      op=c.top(); 
      cout<<op<<endl; 
      c.top()=expression[i+1]; 
      //c.pop(); 
      post="(" + leftop + " " + op + " " + rightop + ")"; 

      cout<<post<<endl; 
     } 


     //c.push(post); 
    } 
} 







int main(){ 

    string expression; 
    cout<<" Enter a Post Fix expression: "; 


    getline(cin,expression); 

    convert(expression); 

    return 0; 

} 

ответ

0

В C строки представляют собой, по существу, кучу указателей символов. Вы можете обратиться к this SO post за несколько примеров того, как удалить пробел из строки ввода, перемещая указатели.

0

Вы можете проверить явно каждый символ против " \t\r", или вы можете использовать функцию isspace объявленную в cctypes:

for (int i =0; i<=expression.length()-1;i++){ 
    if (isspace(expression[i])) continue; 
    // remaining unchanged ... 

Я обновление my answer to your other question с этим.

 Смежные вопросы

  • Нет связанных вопросов^_^