最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++中cout的格式使用詳細(xì)介紹

 更新時(shí)間:2021年06月09日 12:10:46   作者:~星常明~  
cout 是C++中 ostream 類型的對(duì)象,該類被封裝在 < iostream > 庫中,該庫定義的名字都在命名空間 std 中,所以 cout 全稱是 std::cout 。本文重點(diǎn)給大家介紹C++中cout的格式使用,需要的朋友參考下吧

1.cout和i/i++/++i的組合使用

i++ 和 ++i 是有著不同的含義,和 cout 組合使用也會(huì)得到不同的結(jié)果,下面給出一段代碼:

#include <iostream>
using namespace std;
int main(){
    int i = 1;
    cout << ++i << i++ << i << i++ << ++i << endl;
    return 0;
}

這段代碼的結(jié)果是多少呢?
A.23345
B.22335
C.54535
D.53525

我們不妨先理解一下 cout 輸出控制臺(tái)的過程??聪旅孢@幅圖:

輸出方式

根據(jù)表達(dá)式來看, endl 會(huì)作為一個(gè)可以供 cout 接收的對(duì)象往前傳,而 ++i 和 endl 結(jié)合起來作為一個(gè)可以供 cout 接收的對(duì)象往前傳,依次遞推下去。物理實(shí)現(xiàn)上需要一個(gè)棧來保存可以供 cout 接收的對(duì)象,然后從右向左放到這個(gè)棧里,然后依次彈出輸出在屏幕上。其中, i 和 ++i 會(huì)在棧里面保存 i 的引用,而 i++ 會(huì)在棧里面保存數(shù)字,過程如下:

入棧過程

第一步:將 endl 壓入棧中, i 值不變;
第二步:將 i 的引用壓入棧中, i 的值加 1 變成 2(因?yàn)槭?++i );
第三步:將 2 壓入棧中, i 的值加 1 變成 3(因?yàn)槭?i++ );
第四步:將 i 的引用壓入棧中, i 的值不變(因?yàn)槭?i );
第五步:將 3 壓入棧中, i 的值加 1 變成 4(因?yàn)槭?i++ );
第六步:將 i 的引用壓入棧中, i 的值加 1 變成 5(因?yàn)槭?++i );
第七步:將棧里的數(shù)據(jù)依次彈出,即可得到 53525 。(因?yàn)閕的值是 5 ,所以所有 i 的引用都是 5 )

2.用不同進(jìn)制輸出數(shù)字

方法一:用控制符 dec(十進(jìn)制),hex(十六進(jìn)制),oct(八進(jìn)制)

#include <iostream>
using namespace std;
int main()
{
	 int chest = 42;     // decimal integer literal
    int waist = 0x42;   // hexadecimal integer literal
    int inseam = 042;   // octal integer literal
    cout << "Monsieur cuts a striking figure!\n";
    cout << "chest = " << chest << " (42 in decimal)\n";
    cout << "waist = " << waist << " (0x42 in hex)\n";
    cout << "inseam = " << inseam << " (042 in octal)\n";
    
    chest = 42;
    waist = 42; 
    inseam = 42;
    cout << "Monsieur cuts a striking figure!"  << endl;
    cout << "chest = " << chest << " (decimal for 42)" << endl;
    cout << hex;      // manipulator for changing number base
    cout << "waist = " << waist << " (hexadecimal for 42)" << endl;
    cout << oct;      // manipulator for changing number base
    cout << "inseam = " << inseam << " (octal for 42)" << endl;
    // cin.get();                    //有些設(shè)備的運(yùn)行窗口只彈出一下,加上該句可以讓窗口停留
    return 0; 
}

運(yùn)行結(jié)果:

在默認(rèn)情況下,cout以十進(jìn)制格式顯示整數(shù)

其中,oct 是八進(jìn)制輸出, dec 是十進(jìn)制(效果和默認(rèn)一樣), hex 是十六進(jìn)制輸出(字母默認(rèn)是小寫字母)。這兩個(gè)也包含在 std 中,即其全稱分別是 std::octstd::dec 、 std::hex ,這三個(gè)控制符包含在庫 < iostream > 中。

注意:默認(rèn)格式為十進(jìn)制,在修改格式之前,原來的格式將一直有效。(修改后的格式一直有效,直到更改它為止)

方法二:使用setbase(n)

#include <iostream>
#include <iomanip>
using namespace std;
int main(){
	int i = 123456;
	cout << i << endl;
	cout << dec << i << endl;
	cout <<"八進(jìn)制:" << oct << i << endl;
	cout <<"十六進(jìn)制(小寫字母):" << hex << i << endl;
	cout << setiosflags(ios::uppercase);
	cout <<"十六進(jìn)制(大寫字母):" << hex << i << endl;
	cout <<"八進(jìn)制:" << setbase(8) << i << endl;
	cout <<"十六進(jìn)制:" << setbase(16) << i << endl;
}

setbase(n) 表示以 n 進(jìn)制顯示,包含在庫 < iomanip > 中,n 只能取 8, 10, 16 三個(gè)值。
setiosflags(ios::uppercase) 表示將字母大寫輸出,包含在庫 < iomanip > 中。
以上均包含在std 命名空間中。

3.調(diào)整字段寬度

width函數(shù)將長度不同的數(shù)字放到寬度相同的字段中,該方法原型為:

int width()

int width(int i)

第一種格式返回字段寬度的當(dāng)前設(shè)置;第二種格式將字段寬度設(shè)置為i個(gè)空格,并返回以前的字段寬度值。這使得能夠保存以前的值以便恢復(fù)寬度值時(shí)使用。

注意:width()方法只影響接下來顯示的一個(gè)項(xiàng)目,然后字段寬度將恢復(fù)為默認(rèn)值。

#include <iostream>
using namespace std;
int main()
{
    int w = cout.width(30);
    cout << "default field width = " << w << ":\n";
    int a;
    cout.width(10);
	cout <<cout.width(10) <<endl;			//返回當(dāng)前字段的寬度 
 
    cout.width(5);
    cout << "N" <<':';
    cout.width(8);
    cout << "N * N" << ":\n";
    for (long i = 1; i <= 100; i *= 10)
    {
        cout.width(5);
        cout << i <<':';
        cout.width(8);
        cout << i * i << ":\n";
    }
    return 0; 
}

也可以使用setw(int n)來設(shè)置輸出域?qū)挕?/p>

#include <iostream>
#include <iomanip>
using namespace std;
int main(){
	cout << 's' << setw(8) << 'a' << endl;			//s與a之間有7個(gè)空格 
	cout << 's' << setw(3) << 'abcd' << endl;
}

setw()只對(duì)其后面緊跟的輸出產(chǎn)生作用,如上例中,表示'a'共占8個(gè)位置,不足的7個(gè)位置用空格填充。

若緊跟的輸出的內(nèi)容超過setw()設(shè)置的長度,輸出結(jié)果存在問題。

填充字符

在默認(rèn)情況下,cout用空格填充字段中未被使用的部分,可以用fill()成員函數(shù)來改變填充字符。

控制符包含在庫 < iomanip > 中,std 命名空間中。

#include <iostream>
using namespace std;
int main()
{
    cout.fill('*');
    const char * staff[2] = { "Waldo Whipsnade", "Wilmarie Wooper"};
    long bonus[2] = {900, 1350};
 
    for (int i = 0; i < 2; i++)
    {
        cout << staff[i] << ": $";
        cout.width(7);
        cout << bonus[i] << "\n";
    }
    return 0; 
}

注意:與字段寬度不同的是,新的填充字符將一直有效,直到更改它為止。

4.設(shè)置浮點(diǎn)數(shù)的顯示精度

方法一:

C++的默認(rèn)精度為六位(但末尾的0將不顯示)。precision()成員函數(shù)使得能夠選擇其他值,與fill類似,新的精度設(shè)置將一直有效,直到被重新設(shè)置。

#include <iostream>
using namespace std;
int main()
{
    float price1 = 20.40;
    float price2 = 1.9 + 8.0 / 9.0;
 
    cout << "\"Furry Friends\" is $" << price1 << "!\n";
    cout << "\"Fiery Fiends\" is $" << price2 << "!\n";
 
    cout.precision(2);
    cout << "\"Furry Friends\" is $" << price1 << "!\n";
    cout << "\"Fiery Fiends\" is $" << price2 << "!\n";
    return 0; 
}

方法二:

前提:包含庫 < iomanip > ,這個(gè)庫包含了對(duì)輸入輸出的控制。

#include <iostream>
#include <iomanip>
using namespace std;
int main(){
	double i = 3333.1415926;
	cout << i << endl;
	cout << setprecision(3) << i << endl;
	cout << setprecision(9) << i << endl;
	cout << setiosflags(ios::fixed);
	cout << i << endl;
	cout << fixed << setprecision(3) << i << endl;
	cout << setprecision(9) << fixed <<  i << endl;
}

可以看出,C++默認(rèn)浮點(diǎn)數(shù)輸出有效位數(shù)是 6 位(若前面整數(shù)位數(shù)大于 6 位,使用科學(xué)計(jì)數(shù)法輸出),而通過以下幾種方式可以更改輸出精度:
1.使用 setprecision(n) 即可設(shè)置浮點(diǎn)數(shù)輸出的有效位數(shù)
(若前面整數(shù)位數(shù)大于 n 位,使用科學(xué)計(jì)數(shù)法輸出)
2.使用 setiosflags(ios::fixed) 或 fixed,表示對(duì)小數(shù)點(diǎn)后面數(shù)字的輸出精度進(jìn)行控制
所以,和 setprecision(n) 結(jié)合使用即可設(shè)置浮點(diǎn)數(shù)小數(shù)點(diǎn)后面數(shù)字的輸出精度,位數(shù)不足的補(bǔ)零
以上均采用 “四舍五入” 的方法控制精度,三個(gè)控制符均包含在 std 命名空間中。

打印末尾的0和小數(shù)

#include <iostream>
using namespace std;
int main()
{
    float price1 = 20.40;
    float price2 = 1.9 + 8.0 / 9.0;
 
    cout.setf(ios_base::showpoint);
    cout << "\"Furry Friends\" is $" << price1 << "!\n";
    cout << "\"Fiery Fiends\" is $" << price2 << "!\n";
 
    cout.precision(2);
    cout << "\"Furry Friends\" is $" << price1 << "!\n";
    cout << "\"Fiery Fiends\" is $" << price2 << "!\n";
	// std::cin.get();
    return 0; 
}

以上就是C++中cout的格式使用的詳細(xì)內(nèi)容,更多關(guān)于C++ cout格式的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • c語言實(shí)現(xiàn)冒泡排序、希爾排序等多種算法示例

    c語言實(shí)現(xiàn)冒泡排序、希爾排序等多種算法示例

    c語言實(shí)現(xiàn)插入排序、冒泡排序、選擇排序、快速排序、堆排序、歸并排序、希爾排序示例,需要的朋友可以參考下
    2014-04-04
  • 從匯編看c++中默認(rèn)構(gòu)造函數(shù)的使用分析

    從匯編看c++中默認(rèn)構(gòu)造函數(shù)的使用分析

    c++中,如果為一個(gè)類沒有明確定義一個(gè)構(gòu)造函數(shù),那么,編譯器就會(huì)自動(dòng)合成一個(gè)默認(rèn)的構(gòu)造函數(shù)。下面,通過匯編程序,來看一下其真實(shí)情況
    2013-05-05
  • 基于QT繪制一個(gè)漂亮的預(yù)警儀表

    基于QT繪制一個(gè)漂亮的預(yù)警儀表

    這篇文章主要為大家詳細(xì)介紹了如何基于QT繪制一個(gè)漂亮的預(yù)警儀表,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的可以了解一下
    2023-04-04
  • C++成員函數(shù)如何當(dāng)作回調(diào)函數(shù)同時(shí)傳遞this指針

    C++成員函數(shù)如何當(dāng)作回調(diào)函數(shù)同時(shí)傳遞this指針

    這篇文章主要介紹了C++成員函數(shù)如何當(dāng)作回調(diào)函數(shù)同時(shí)傳遞this指針,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 一文詳解C語言操作符

    一文詳解C語言操作符

    這篇文章主要詳細(xì)介紹了C語言的操作符,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • C++ 面試題翻譯電話號(hào)碼實(shí)例代碼

    C++ 面試題翻譯電話號(hào)碼實(shí)例代碼

    這篇文章主要介紹了C++ 面試題翻譯電話號(hào)碼實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • C++實(shí)現(xiàn)LeetCode(57.插入?yún)^(qū)間)

    C++實(shí)現(xiàn)LeetCode(57.插入?yún)^(qū)間)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(57.插入?yún)^(qū)間),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C語言 從根本上理解數(shù)組

    C語言 從根本上理解數(shù)組

    數(shù)組是一組有序的數(shù)據(jù)的集合,數(shù)組中元素類型相同,由數(shù)組名和下標(biāo)唯一地確定,數(shù)組中數(shù)據(jù)不僅數(shù)據(jù)類型相同,而且在計(jì)算機(jī)內(nèi)存里連續(xù)存放,地址編號(hào)最低的存儲(chǔ)單元存放數(shù)組的起始元素,地址編號(hào)最高的存儲(chǔ)單元存放數(shù)組的最后一個(gè)元素
    2022-04-04
  • C++編程語言實(shí)現(xiàn)單鏈表詳情

    C++編程語言實(shí)現(xiàn)單鏈表詳情

    這篇文章主要介紹的是利用C語言實(shí)現(xiàn)單鏈表,實(shí)現(xiàn)的是鏈表中最簡(jiǎn)單的一種單鏈表且每個(gè)結(jié)點(diǎn)中只含有一個(gè)指針域,下面將詳細(xì)舉例說明,需要的朋友可以參考一下
    2021-10-10
  • C語言學(xué)習(xí)之條件和?if...else語句詳解

    C語言學(xué)習(xí)之條件和?if...else語句詳解

    這篇文章主要給大家介紹了C語言中的條件和?if...else語句,文中通過代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-12-12

最新評(píng)論

津南区| 奉节县| 河北省| 萨迦县| 贡山| 凤台县| 龙海市| 治县。| 什邡市| 鄱阳县| 饶阳县| 蒙山县| 三原县| 南丰县| 保定市| 美姑县| 慈溪市| 延长县| 新兴县| 额济纳旗| 金昌市| 蓬溪县| 寿阳县| 沁阳市| 永宁县| 榆社县| 会东县| 突泉县| 安溪县| 名山县| 南郑县| 精河县| 庆安县| 惠东县| 甘谷县| 柳河县| 同德县| 台北市| 民丰县| 拜城县| 乌兰浩特市|