0

現在、中置から後置へのコンバーターを作成しています。残りのスタックをポストフィックスに追加する際に問題があることを除いて、それはかなりうまく機能します。スタックは

vector<char>

接尾辞は文字列です。すべてを読み終わったら、次のことを試します。

while (!stack.empty()) {
    postfix.push_back(stack.back());
    stack.pop_back();
}

しかし、何も追加されていません。デバッグモードでも試してみましたが、問題ないようですが、何も追加されません。

std::cout << postfix.c_str();

スタックから最後の演算子を除外します。一時的に保存しようとしましたが、プッシュされません。

制限のため、4 つのファイルすべてをペーストビンに投稿することはできません。私は Visual Studio 2010 Ultimate を使用していますが、エラーはなく、文字が追加されていません。

4

1 に答える 1

1

その文字列を出力する方法は不必要に複雑で、間違っている可能性もあります。交換すれば

std::cout << postfix.c_str();

std::cout << postfix;

ヌル文字が埋め込まれていても、文字列に実際に何が含まれているかがわかります。

'\0' をエラー インジケータとして使用していますが、チェックしていないため、null が埋め込まれている可能性があります。また、c_str() を使用することで、最初の null で文字列を切り捨てることを明示的に要求しています。

于 2012-03-21T08:10:34.343 に答える