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

C++學(xué)習(xí)之IO流(輸入輸出流)詳解

 更新時(shí)間:2021年12月14日 16:50:02   作者:考拉愛(ài)睡覺(jué)鴨~  
流是一種抽象概念,它代表了數(shù)據(jù)的無(wú)結(jié)構(gòu)化傳遞。而用來(lái)進(jìn)行輸入輸出操作的流就稱為IO流。這篇文章主要為大家介紹了C++中IO流的使用詳解,需要的朋友可以參考一下

介紹

流: 若干字節(jié)數(shù)據(jù)從一端到另一端我們叫做流

例如:操作文件,從程序到文件,數(shù)據(jù)的流動(dòng)的操作稱為流操作

流類體系

專門處理輸入輸出流、字符流、文件流,包含有:

  • 流對(duì)象
  • 流運(yùn)算符 >>? <<

輸入/出流對(duì)象 + 流運(yùn)算符 >>? <<---處理輸入輸出的數(shù)據(jù)

字符流對(duì)象 + 流運(yùn)算符 >>? ?<<? ?---處理字符流

文件的對(duì)象 + 流運(yùn)算符 >>? <<? ? ---讀寫文件

基本輸入、輸出流

istream 類---cin? ? ? ?輸入

ostream類---cout? ? ?輸出

tip:輸出流除了cout外,還有一些別的對(duì)象(效果和cout一樣)

  • cerr ---標(biāo)準(zhǔn)出錯(cuò)
  • clog ---日志文件輸出
#include <iostream>
using namespace std;
void testostream()     //output 
{
	//freopen()
	cout << "標(biāo)準(zhǔn)輸出" << endl;		//cin/cout都可以重定向
	cerr << "標(biāo)準(zhǔn)錯(cuò)誤輸出" << endl;	//不能重定向 當(dāng)覺(jué)得程序可能出錯(cuò)時(shí)用cerr輸出,標(biāo)識(shí)作用
	clog << "日志文件輸出" << endl;  //可以重定向?yàn)槲募?
}
int main(){
 
    testostream();
}
/*輸出*/
 
/*標(biāo)準(zhǔn)輸出
 標(biāo)準(zhǔn)錯(cuò)誤輸出
 日志文件輸出*/

freopen

把程序的輸入、輸出重定向?yàn)槲募?/p>

重定向是文件中的數(shù)據(jù)的格式要與程序讀取的格式一致

輸入重定向

#include<cstdio>
#include<iostream>
int main(){
 
    freopen("1.txt","r",stdin);//參數(shù):文件名 讀寫方式 流
    int a,b;
    scanf("%d%d",&a,&b);       //把基本輸入定向?yàn)槲募?程序所有的輸入由文件完成
    std::cout<<a+b;
 
}
/*輸出*/
 
/* 在黑窗口輸出3 */

輸出重定向

#include<cstdio>
#include<iostream>
int main(){
 
    freopen("1.txt","r",stdin);//參數(shù):文件名 讀寫方式 流
    int a,b;
    scanf("%d%d",&a,&b);       //把基本輸入定向?yàn)槲募?程序所有的輸入由文件完成
    std::cout<<a+b;
    freopen("2.text","w",stdout);
    printf("%d",a+b);
 
}
/*輸出*/
 
/* 在2.txt中輸出3 */

字符類的處理

  • 正常的操作
  • 通過(guò)IO流對(duì)象調(diào)用成員函數(shù)的方式

單個(gè)字符和字符串的輸出處理

//調(diào)用成員函數(shù)的方式傳常量、變量都可以
void testostream()    
{
//單個(gè)字符的輸出
    cout.put('a');          //傳常量    通過(guò)IO流對(duì)象調(diào)用成員函數(shù)的方式
	cout << 'a' << endl;    //正常的輸出方式
 
	char c = 'C';
	cout.put(c);    //傳變量
	cout << c << endl;
//多個(gè)字符/字符串的輸出
	cout.write("ILoveyou",4); /*直接寫入輸出 后面的參數(shù):指定長(zhǎng)度,超過(guò)長(zhǎng)度的部分不做輸 
                                出截取輸出沒(méi)有'\0',只截取了前面4位*/
}
int main(){
 
    testostream();
}
/*輸出*/
 
/*aa
  CC
  ILov*/

單個(gè)字符和字符串的輸入處理

void testostream()
{
//單個(gè)字符的輸入
	/*  char c;
		c=cin.get();
		cout.put(c);    用中間變量接收返回值,再做輸出*/
	cout.put(cin.get());    //要處理回車
	cout << endl;
 
//多個(gè)字符/字符串的輸入
	cout << "字符串的處理"<<endl;
	while (cin.get() != '\n');
	//while(getchar()!='\n');
	char str[20] = "";   //準(zhǔn)備一個(gè)字符串   注意不是返回值不能一步到位
	cin.getline(str, 20);//輸入函數(shù)
	cout.write(str, 20); //輸出函數(shù) 相對(duì)于流操作更安全,可以指定長(zhǎng)度,同樣需要清空緩沖區(qū)處理
}
int main() {
 
	testostream();
}
/*輸出*/
 
/*a
  a
  字符串的處理
  hello
  hello*/

注意不能用來(lái)處理string

 string text;
 cin.getline(text,20);    //報(bào)錯(cuò),不能處理string,只能處理char*

格式控制字符

包含頭文件 <iomanip>

常用的格式控制,一種是調(diào)用成員函數(shù)方式,一種流控制字符去做

  • 設(shè)置有效位數(shù): setprecision(n)
  • 設(shè)置精度: fixed 結(jié)合 setprecision 使用

tip:流控制字符---c++用來(lái)控制格式的操作

設(shè)置格式

int main(){
 
	double pi = 34.12343;
	cout << "設(shè)置有效位數(shù)是:" << setprecision(4) << pi << endl;     //從整數(shù)位開(kāi)始算
	cout << "有效小數(shù)位:" << fixed << setprecision(4) << pi << endl;//從小數(shù)位開(kāi)始算
 
//所有的流控制符都會(huì)對(duì)應(yīng)一個(gè)成員函數(shù)的方式
	cout.precision(4); 
	cout << "有效小數(shù)位:" << pi;/*設(shè)置完流格式不一定要立即輸出,
                                 可以緩慢輸出(在下一行輸出)*/
 
	double pi = 34.12369;
	cout << "設(shè)置有效位數(shù)是:" << setprecision(4) << pi << endl;
	cout << "有效小數(shù)位:" << fixed << setprecision(4) << pi << endl;
	cout.precision(4); //所有的流控制符都會(huì)對(duì)應(yīng)一個(gè)成員函數(shù)的方式
	cout << "有效小數(shù)位:" << pi;
}
/*輸出   四舍五入 */
 
/* 設(shè)置有效位數(shù)是:34.12
   有效小數(shù)位:34.1234
   有效小數(shù)位:34.1234 
   設(shè)置有效位數(shù)是:34.12
   有效小數(shù)位:34.1237
   有效小數(shù)位:34.1237    */    

進(jìn)制輸出

int main(){
	cout << hex << 32 << endl;  //16進(jìn)制
	cout << oct << 15 << endl;  //8進(jìn)制輸出
//流控制字符的方式
	cout << setbase(2) << 7 << endl; //2進(jìn)制無(wú)效,不能是任意進(jìn)制,任意進(jìn)制的默認(rèn)10進(jìn)制輸出
	
}
/*輸出*/
 
/*20
  17
  7*/

對(duì)齊方式和數(shù)據(jù)的寬度問(wèn)題? ? ? ? 制表符 '\t'

限制每個(gè)數(shù)據(jù)的位數(shù)不足補(bǔ)空格?

1. 8位制表,不足8位? 補(bǔ)空格? ? ? ?

2. 超過(guò)8位,按照16位制表?

//默認(rèn)右對(duì)齊
int main(){
	
   cout << setw(8) << "123" << setw(8) << "12344" << setw(8) << "3444" << endl;
   cout << setiosflags(ios::left);//ios::right右對(duì)齊 ios::left左對(duì)齊 數(shù)據(jù)不夠用空格占位
   cout << setw(8) << "123" << setw(8) << "12344" << setw(8) << "3444" << endl;
   /*cout.width(8);
    cout<<"123"<<"123"<<"666";    調(diào)用成員函數(shù)的方式,只能管一個(gè)制表
    
}
/*輸出*/
     123   12344    3444 //默認(rèn)是右對(duì)齊方式
123     12344   3444
 
123     123666

到此這篇關(guān)于C++學(xué)習(xí)之IO流(輸入輸出流)詳解的文章就介紹到這了,更多相關(guān)C++ IO流內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++實(shí)踐Time類中的運(yùn)算符重載參考方法

    C++實(shí)踐Time類中的運(yùn)算符重載參考方法

    今天小編就為大家分享一篇關(guān)于C++實(shí)踐Time類中的運(yùn)算符重載參考方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-02-02
  • c++中的內(nèi)聯(lián)函數(shù)inline用法實(shí)例

    c++中的內(nèi)聯(lián)函數(shù)inline用法實(shí)例

    在本篇文章里小編給大家整理的是關(guān)于c++中的內(nèi)聯(lián)函數(shù)inline用法實(shí)例以及相關(guān)知識(shí)點(diǎn),有需要的朋友們學(xué)習(xí)下。
    2019-09-09
  • C語(yǔ)言中字符的輸入輸出以及計(jì)算字符個(gè)數(shù)的方法詳解

    C語(yǔ)言中字符的輸入輸出以及計(jì)算字符個(gè)數(shù)的方法詳解

    這篇文章主要介紹了C語(yǔ)言中字符的輸入輸出以及計(jì)算字符個(gè)數(shù)的方法,是C語(yǔ)言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-11-11
  • 使用C++和代理IP實(shí)現(xiàn)天氣預(yù)報(bào)的采集

    使用C++和代理IP實(shí)現(xiàn)天氣預(yù)報(bào)的采集

    在當(dāng)今的互聯(lián)網(wǎng)時(shí)代,網(wǎng)絡(luò)信息的獲取變得日益重要,天氣預(yù)報(bào)信息作為日常生活的重要參考,其獲取方式也隨著技術(shù)的發(fā)展而不斷變化,在本文中,我們將探討如何使用C++和代理IP來(lái)采集天氣預(yù)報(bào)信息,文中通過(guò)代碼講解的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • C語(yǔ)言文件操作詳解

    C語(yǔ)言文件操作詳解

    這篇文章主要介紹了C語(yǔ)言 文件操作解析詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下,希望能夠給你帶來(lái)幫助
    2021-10-10
  • C++實(shí)現(xiàn)的鏈表類實(shí)例

    C++實(shí)現(xiàn)的鏈表類實(shí)例

    這篇文章主要介紹了C++實(shí)現(xiàn)的鏈表類,以完整實(shí)例分析了C++實(shí)現(xiàn)鏈表類的定義、插入、刪除、遍歷、統(tǒng)計(jì)等相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • C++中獲取字符串長(zhǎng)度的函數(shù)sizeof()、strlen()、length()、size()詳解和區(qū)別(推薦)

    C++中獲取字符串長(zhǎng)度的函數(shù)sizeof()、strlen()、length()、size()詳解和區(qū)別(推薦)

    在C++中計(jì)算長(zhǎng)度的函數(shù)有四種,它們分別是sizeof()?,size(),strlen(),str.length(),這篇文章主要介紹了C++中獲取字符串長(zhǎng)度的函數(shù)sizeof()、strlen()、length()、size()詳解和區(qū)別,需要的朋友可以參考下
    2023-02-02
  • MFC實(shí)現(xiàn)對(duì)話框編輯控件上拖拽文件

    MFC實(shí)現(xiàn)對(duì)話框編輯控件上拖拽文件

    這篇文章主要為大家詳細(xì)介紹了MFC實(shí)現(xiàn)對(duì)話框編輯控件上拖拽文件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • 使用代碼驗(yàn)證linux子進(jìn)程與父進(jìn)程的關(guān)系

    使用代碼驗(yàn)證linux子進(jìn)程與父進(jìn)程的關(guān)系

    Linux下父進(jìn)程可以使用fork 函數(shù)創(chuàng)建子進(jìn)程,但是當(dāng)父進(jìn)程先退出后,子進(jìn)程會(huì)不會(huì)也退出呢?通過(guò)下面這個(gè)小實(shí)驗(yàn),我們能夠很好的看出來(lái)
    2014-02-02
  • C語(yǔ)言實(shí)現(xiàn)刪除某一個(gè)數(shù)組值的方法

    C語(yǔ)言實(shí)現(xiàn)刪除某一個(gè)數(shù)組值的方法

    這篇文章主要給大家分享C語(yǔ)言數(shù)組中刪除數(shù)組中某個(gè)值的方法,既然要學(xué)習(xí)刪除數(shù)組中的元素,我們就必須得先知道數(shù)組中有哪些元素。同時(shí)還要定義一個(gè)變量,并將需要?jiǎng)h除的元素賦值給那個(gè)變量。下面來(lái)看看文章的詳細(xì)內(nèi)容吧
    2021-11-11

最新評(píng)論

韶山市| 东乌珠穆沁旗| 利辛县| 平乐县| 中阳县| 晋宁县| 闻喜县| 高安市| 亚东县| 绩溪县| 定兴县| 承德县| 万全县| 墨脱县| 贵港市| 广汉市| 云龙县| 弥渡县| 信丰县| 望奎县| 五寨县| 安宁市| 鞍山市| 柏乡县| 敦煌市| 盐亭县| 正镶白旗| 涿鹿县| 宜州市| 绥棱县| 西贡区| 安西县| 浮山县| 阿图什市| 石棉县| 许昌市| 曲沃县| 衡山县| 天水市| 上蔡县| 德令哈市|