Namespaces
Variants

std:: ws

From cppreference.net
< cpp ‎ | io ‎ | manip
ヘッダーで定義 <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> の公開メンバー関数)