標準入出力ストリームの基礎 解答ページ | Programming Place Plus C++編【言語解説】 第5章

トップページC++編

C++編で扱っている C++ は 2003年に登場した C++03 という、とても古いバージョンのものです。C++ はその後、C++11 -> C++14 -> C++17 -> C++20 と更新されており、今後も 3年ごとに更新されます。
なかでも C++11 での更新は非常に大きなものであり、これから C++ の学習を始めるのなら、C++11 よりも古いバージョンを対象にするべきではありません。特に事情がないなら、新しい C++ を学んでください。 当サイトでは、C++14 をベースにした新C++編を作成中です。

問題①

問題① std::hex、std::oct、std::dec というマニピュレータを使うと、16進数、8進数、10進数での整数出力が可能になります。適当な整数値を出力して試してみてください。


#include <iostream>

int main()
{
    const int num = 100;

    std::cout << std::hex << num << "\n"
              << std::oct << num << "\n"
              << std::dec << num << std::endl;
}

実行結果:

64
144
100

特に解説はいらないと思いますが、どの位置にマニピュレータを差し込めばいいかを理解してください。<< をデータが左へ流れているのだと考えて、マニピュレータのあるところをデータが通過すると何かしらの変化が起きるというように想像すると差し込むべき位置が分かるかと思います。

問題②

問題② 問題①のマニピュレータを使うだけでは、16進数における 0x や、8進数における 0 といったプリフィックスが付きません。これを付けるためには、std::showbase が使えます。また、付けないようにする(戻す)ためには、std::noshowbase が使えます。それぞれ、試してみてください。


#include <iostream>

int main()
{
    const int num = 100;

    std::cout << std::showbase
              << std::hex << num << "\n"
              << std::noshowbase
              << std::oct << num << "\n"
              << std::dec << num << std::endl;
}

実行結果:

0x64
144
100


参考リンク


更新履歴

’2013/12/15 新規作成。



第5章のメインページへ

C++編のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
X で ポストフォロー LINE で送る noteで書く
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー
先頭へ戻る