4
4

1 に答える 1

1

フォーマットされた入力を使用しstd::stringて最初の単語のみを読み取る場合: 先頭の空白をスキップした後、最初の空白に遭遇するまで文字列が読み取られます。その結果、入力( )は一致するはずですstd::cin >> strが、読み取りのみになります(。したがって、入力はおそらく次のようになります。

if (std::getline(std::cin, str)) {
    // algorithm for matching parenthesis and brackets goes here
}

still を使用std::getline()すると、入力がどのように表示されるか、つまり入力が 1 行にあることが前提になります。アルゴリズムが入力全体を処理する必要がある場合は、std::cin使用します

str.assign(std::istreambuf_iterator<char>(std::cin),
           std::istreambuf_iterator<char>());

アルゴリズムは不必要に複雑だと思いますが (かっこの種類を格納するスタックで十分です)、動作するはずだと思います。つまり、私が見つけた唯一の問題は、入力を取得する方法です。

于 2013-09-15T18:30:25.410 に答える