std:: ws
|
ヘッダーで定義
<istream>
|
||
|
template
<
class
CharT,
class
Traits
>
std:: basic_istream < CharT, Traits > & ws ( std:: basic_istream < CharT, Traits > & is ) ; |
||
入力ストリームから先頭の空白文字を破棄します。
UnformattedInputFunction として振る舞いますが、 is. gcount ( ) は変更されません。セントリオブジェクトを構築・チェックした後、以下のいずれかの条件が発生するまで、ストリームから文字を抽出して破棄します:
-
入力シーケンスでファイル終端条件が発生した場合(この場合、関数は
setstate
(
eofbit
)
を呼び出すが、
failbitは設定しない;eofbitが is に既に設定されている場合は適用されず、その場合wsの呼び出し前のセントリオブジェクトの構築時にfailbitが設定される)。
- 入力シーケンスにおける次の利用可能な文字 c が、 std:: isspace ( c, is. getloc ( ) ) によって決定されるように空白文字ではない場合。この非空白文字は抽出されません。
これは入力専用のI/Oマニピュレータであり、型が std::basic_istream である任意の in に対して in >> std :: ws のような式で呼び出すことができます。
目次 |
パラメータ
| は | - | 入力ストリームへの参照 |
戻り値
is (連続する空白文字の抽出後のストリームへの参照)。
注記
ストリームで呼び出し前に
eofbit
が設定されている場合、セントリーオブジェクトの構築によって
failbit
が設定されます。
例
#include <iomanip> #include <iostream> #include <istream> #include <sstream> #include <string> int main() { for (const char* str : {" #1 test", "\t #2 test", "#3 test"}) { std::string line; std::getline(std::istringstream{str}, line); std::cout << "getline returns:\t" << std::quoted(line) << '\n'; std::istringstream iss{str}; std::getline(iss >> std::ws, line); std::cout << "ws + getline returns:\t" << std::quoted(line) << '\n'; } }
出力:
getline returns: " #1 test" ws + getline returns: "#1 test" getline returns: " #2 test" ws + getline returns: "#2 test" getline returns: "#3 test" ws + getline returns: "#3 test"
欠陥報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
| LWG 415 | C++98 |
std::ws
の呼び出しがセントリーオブジェクトを
構築しない可能性があった(他の入力関数と非一貫性) |
セントリーオブジェクトの構築が
必須要件となった |
関連項目
|
指定された文字が見つかるまで文字を抽出して破棄する
(
std::basic_istream<CharT,Traits>
の公開メンバー関数)
|