2017-10-08 3 views
0

スタックが定義されており、文字列だけを受け取ります。 私の目標は各キャラクタを読むことです、もし+のような演算子であれば、それをスタックにプッシュする必要があります。文字を文字列型にスタックに保存していますか?

私はそれを押すと、それは私が文字列にして文字を保存するために達成しない方法を43

ある+のACSIIのcalueを節約?

は私が最終的に私は後置式にINFOXを変換するコードを書いています、+保存する必要がSTLに

stack<string> s1; 
    string post; 
    if (exp[0] == '+') 
    { 
     s1.push(to_string(exp[0])); 
    } 
    cout<<s1.top(); 

を使用しようとしました。私の入力は演算子で番号が付けられます

+1

なぜあなたは(「+」)s1.pushを行うことはできません。あなたはすでにそれが+であることを知っています、あなたがそれをチェックしているからです。 –

+0

私は、forループを使ってオペレータをチェックし、それを文字列スタック – AmithRc

+0

にプッシュすると、なぜあなたはs1.push( "+")をすることができないのですか?あなたのスタックはちょうどスタックになりそうですか s1 –

答えて

1

to_string functionは、数値を文字列に変換するオーバーロードしかないため、文字列 "43"が得られます。あなたは、このようにコードを変更することができます:

s1.push("+"); 

した文字列のfrom c-stringコンストラクタが暗黙のうちにstringconst char*から変換するために使用されます。別の方法として、最も簡単な方法は、あなたがこれを書くと、その場合にはfill constructorを使用することです、stringに単一charから変換するには:

s1.push(string(1, exp[0])); 
+0

素晴らしい、それは働いた。私はC++には新しく、より多くを探求したいと考えています。私はちょうどto_stringで作業する方法を見ていた。あなたはこの種の問題にアプローチし、より多くのC++機能を探求する方法を説明してください。 – AmithRc

+0

私はこれを理解しようとしていますが、この関数をstring(1、exp [0])と呼ぶと、stringクラスのコンストラクタですか?それをスタックプッシュ関数に送る前に、どのように動作しますか? – AmithRc

+0

これは文字列クラスのコンストラクタであり、文字列のサイズを値で取ります。オーバーロードされたバージョンの詳細は、こちらを参照してください。http://www.cplusplus.com/reference/string/string/string/ –

関連する問題