狠狠撸

狠狠撸Share a Scribd company logo
20代で知っておくべき
マニピュレータのこと
   第11章雑感




                 by
              sato@ipl
マニピュレータの分別


<iostream>で定義されているマニピュレータ

<iomanip>で定義されているマニピュレータ
<iostream>
boolalpha, noboolalpha
showbase, noshowbase
showpoint, noshowpoint
skipws, noskipws
unitbuf, nounitbuf
uppercase, nouppercase
dec, hex, oct
?xed, scienti?c
internal, left, right
ws
endl, ends, ?ush
<iomanip>


setios?ags, resetios?ags
setbase
set?ll
setprecision
setw
<iostream>
boolalpha, noboolalpha
bool型と”true”,”false”を変換します。<istream> <ostream>

#include <iostream>
using namespace std;

int main() {
!    bool b;
!    b = true;
!    cout << boolalpha << b << endl;
!    cout << noboolalpha << b << endl;
!    return 0;
}


true
1
showpoint, noshowpoint
必要がない場合でも小数点を表示します。<ostream>
#include <iostream>
using namespace std;

int main() {
!    double a, b, pi;
!    a = 30.0;
!    b = 10000.0;
!    pi = 3.1416;
!    cout.precision(5);
!    cout << showpoint << a << 't' << b << 't' << pi << endl;
!    cout << noshowpoint << a << 't' << b << 't' << pi << endl;
!    return 0;
}

30.000! 10000.! 3.1416
30! 10000! 3.1416
showpos, noshowpos
正の数値の前に+符号を表示します。<ostream>

#include <iostream>
using namespace std;

int main() {
!    signed int p, z, n;
!    p = 1;
!    z = 0;
!    n = -1;
!    cout << showpos << p << 't' << z << 't' << n << endl;
!    cout << noshowpos << p << 't' << z << 't' << n << endl;
!    return 0;
}

+1! 0!     -1
1! 0!      -1
skipws, noskipws
ストリームからの読み込み時に、ホワイトスペースを読み飛ばします。<istream>

#include <iostream>
#include <sstream>
using namespace std;

int main()
{
!    char a, b, c;

!     istringstream iss ("!  123");
!     iss >> skipws >> a >> b >> c;
!     cout << a << b << c << endl;

!     iss.seekg(0);
!     iss >> noskipws >> a >> b >> c;
!     cout << a << b << c << endl;
!     return 0;
}

123
!   12
uppercase, nouppercase
数値の文字表記の際に大文字で表示します。<ostream>

#include <iostream>
#include <string>
using namespace std;

int main(){
!    cout << showbase << hex;
!    cout << uppercase << 77 << endl;
!    cout << nouppercase << 77 << endl;
!    return 0;
}



0X4D
0x4d
unitbuf, nounitbuf
出力毎にバッファをフラッシュします。<ostream>


#include <fstream>
using namespace std;

int main() {
!    ofstream out?le("test.txt");
!    out?le << unitbuf << "Test " << "?le" << endl;
!    out?le.close();
!    return 0;
}




Test ?le
internal, left, right
数値出力を符号と数値で分けるか、左寄せ、右寄せに指定します。<ostream>
#include <iostream>
using namespace std;

int main() {
!    int n;
!    n = -77;
!    cout.width(6);
!    cout << internal << n << endl;
!    cout.width(6);
!    cout << left << n << endl;
!    cout.width(6);
!    cout << right << n << endl;
!    return 0;
}


- 77
-77
  -77
ws
ホワイトスペースを抽出します。<istream>
#include <iostream>
#include <sstream>
using namespace std;

int main() {
!    char a[10], b[10];

!    istringstream iss ("one n t two");
!    iss >> noskipws;
!    iss >> a >> ws >> b;
!    cout << a << "," << b << endl;

!    return 0;
}


one,two
endl, ends
改行、ヌル文字(‘0’)を追加します。<ostream>
#include <iostream>
using namespace std;

int main() {
!    int a = 100;
!    double b = 3.14;

!    cout << a;
!    cout << endl;
!    cout << b << ends << a*b << endl;

!    return 0;
}


100
3.14314
<iomanip>
setios?ags, resetios?ags
複数のフラグを設定、解除します。<istream> <ostream>


#include <iostream>
#include <iomanip>
using namespace std;

int main() {
!    cout << hex << setios?ags(ios_base::showbase | ios_base::uppercase);
!    cout << 100 << endl;
!    cout << resetios?ags(ios_base::showbase | ios_base::uppercase);
!    cout << 100 << endl;
!    return 0;
}



0X64
64
setbase
基数を指定します。 <ostream>


#include <iostream>
#include <iomanip>
using namespace std;

int main() {
!    cout << setbase(16) << 100 << endl;
!    return 0;
}


64
set?ll
文字列に対して指定した文字を埋めます。<ostream>


#include <iostream>
#include <iomanip>
using namespace std;

int main() {
!    cout << set?ll('x') << setw(10);
!    cout << 77 << endl;
!    return 0;
}



xxxxxxxx77
ところで



<iostream>と<iomanip>のマニピュレータの
違いは?
ところで



<iostream>と<iomanip>のマニピュレータの
違いは?

       A. 引数なしか引数付きか
以上
参考文献



manipulators - C++ Reference

C++入出力フラグ

More Related Content

厂迟谤辞耻蝉迟谤耻辫11章雑感

Editor's Notes