美文网首页
C++中cin、cout的一些特殊用法

C++中cin、cout的一些特殊用法

作者: 长林赤焰 | 来源:发表于2019-02-28 21:21 被阅读0次

    进制转换

    cout默认以十进制的格式输出整数

    int a = 042;
    cout << a << endl;
    //输出结果是34
    

    如果想要cout以八进制或十六进制格式输出整数,需要在输出之前额外执行一条语句

    int a = 42;
    cout << oct;
    cout << a << endl;
    cout << hex;
    cout << a <<endl;
    // 输出结果分别为52和2a
    

    八进制和十六进制还可以用来输出其对应的转义字符

    cout << '\077' << endl; // ?
    cout << '\x3f' << endl; // ?
    cout << "\042 and \x3f\n"; // " and ?
    

    cin、cout的实质

    cin和cout本质上分别是istream类和ostream类的对象,这也是为什么要使用<iostream>头文件的原因。
    它们所对应的<<和>>的使用,称作操作符重载,因此,他们可以读取或输出多种类型的值。
    此外。它们还具有类的成员函数,如cout.put()、cin.get()、cin.getline()

    // cout.put()输出一个字符
    cout.put('$');
    

    输出指定长度的浮点数

    ostream类的setf()方法迫使输出使用定点表示法,防止程序把较大的值切换为E表示法,并使程序显示到小数点后6位小数。参数ios_base::fixed和ios_base::floatfield是iostream中提供的常量。

    using namespace std;
    cout.setf(ios_base::fixed, ios_base::floatfield);
    float tub = 10.0 / 3.0;
    double mint = 10.0 / 3.0;
    const float million = 1.0e6;
    cout << tub << endl; // 3.333333
    cout << million * tub << endl; // 3333333.250000
    cout << 10 * million * tub << endl; // 33333332.000000
    cout << mint << endl; // 3.333333
    cout << million * mint << endl; // 3333333.333333
    

    从中也可以看出float型浮点数有效位数比double类型的有效位数少。

    调用cin、cout的结果

    cin << "dog";
    cin.get();
    cout << "cat\n";
    // 上述调用的结果仍然是一个cin或cout对象,因此可以连续调用
    char Mystr[10];
    cin.get().get(Mystr, 10);
    cout << "cat" << endl;
    

    相关文章

      网友评论

          本文标题:C++中cin、cout的一些特殊用法

          本文链接:https://www.haomeiwen.com/subject/ldxluqtx.html