に似た c++ iostream ライブラリを使用したある種の慣用表現はありますか?
while (c = getchar())
cのイディオム?
注: ステートメントを単に "c = getchar()" のままにして、より汎用的にできるようにしました。実際のコードでは、この結果を EOF や改行などの別のものと比較します。
#include <iostream>
int main() {
char c;
std::cin >> std::noskipws;
while(std::cin >> c) {
std::cout << c << std::endl;
}
}
注: ステートメントを単に "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
。