1

に似た c++ iostream ライブラリを使用したある種の慣用表現はありますか?

while (c = getchar())

cのイディオム?

注: ステートメントを単に "c = getchar()" のままにして、より汎用的にできるようにしました。実際のコードでは、この結果を EOF や改行などの別のものと比較します。

4

3 に答える 3

9
#include <iostream>

int main() {
    char c;
    std::cin >> std::noskipws;
    while(std::cin >> c) {
        std::cout << c << std::endl;
    }
}
于 2013-08-16T20:53:22.500 に答える
0

注: ステートメントを単に "c = getchar()" のままにして、より汎用的にできるようにしました。実際のコードでは、この結果を EOF や改行などの別のものと比較します。

ええと、それは一般的ではありません。それが何かの一般的なバージョンである場合、それは一般的に一般的なエラーを表しています。すべてのソフトウェアは、どこでもEOF 条件を処理する必要があります。

C++ では、成功に応じて true または false の値として比較するストリーム バッファーを使用します。EOF を偽のストリーム値として使用する必要はありませんが、使用することを選択できます。

イディオム(sans bug)は次のようになります

while ( std::cin.get( c ) )

空行でファイルを終了する必要がなく、次の改行まで消費し、反復ごとに 1 行を解析する場合は、次を使用します。

std::string s;
while ( getline( std::cin, s ) ) {
    std::istringstream line( s );

次に、を使用してアイテムを抽出できますline >> x

于 2013-08-18T00:42:17.590 に答える