名前空間
変種
操作

std::ws

From cppreference.com
< cpp‎ | io‎ | manip
 
 
 
入出力マニピュレータ
浮動小数点フォーマット
整数フォーマット
boolフォーマット
フィールド幅と埋め文字制御
その他のフォーマット
空白文字の処理
ws
出力のフラッシュ
(C++20)  

ステータスフラグの操作
時間と通貨のI/O
(C++11)
(C++11)
(C++11)
(C++11)
クォート付きマニピュレータ
(C++14)
 
ヘッダ<istream>で定義
template< class CharT, class Traits >
std::basic_istream<CharT, Traits>& ws( std::basic_istream<CharT, Traits>& is );

入力ストリームから先頭の空白文字を破棄します。

is.gcount() は変更されない点を除き、UnformattedInputFunction と同様に動作します。セントリーオブジェクトを構築し、チェックした後、以下のいずれかの条件が発生するまでストリームから文字を抽出し、破棄します。

  • 入力シーケンスでファイルの終端条件が発生した場合(この場合、関数は setstate(eofbit) を呼び出しますが、failbit は設定しません。これは、ws の呼び出し前に eofbitis にすでに設定されている場合には適用されず、その場合、セントリーオブジェクトの構築により failbit が設定されます)。
  • 入力シーケンスの次の利用可能な文字 c が、std::isspace(c, is.getloc()) によって決定される空白文字ではない場合。空白文字ではない文字は抽出されません。

これは入力専用の I/O マニピュレータであり、任意の instd::basic_istream 型)に対して、in >> std::ws のような式で呼び出すことができます。

目次

[編集] パラメータ

is - 入力ストリームへの参照

[編集] 戻り値

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> の public メンバ関数) [編集]
English 日本語 中文(简体) 中文(繁體)