您好,登錄后才能下訂單哦!
本篇文章為大家展示了如何解析C++中IO流的輸入輸出流,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
流: 若干字節(jié)數(shù)據(jù)從一端到另一端我們叫做流
例如:操作文件,從程序到文件,數(shù)據(jù)的流動(dòng)的操作稱(chēng)為流操作
流類(lèi)體系
專(zhuān)門(mén)處理輸入輸出流、字符流、文件流,包含有:
流對(duì)象
流運(yùn)算符 >> <<
輸入/出流對(duì)象 + 流運(yùn)算符 >> <<---處理輸入輸出的數(shù)據(jù)
字符流對(duì)象 + 流運(yùn)算符 >> << ---處理字符流
文件的對(duì)象 + 流運(yùn)算符 >> << ---讀寫(xiě)文件
istream 類(lèi)---cin 輸入
ostream類(lèi)---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ò)誤輸出 日志文件輸出*/
把程序的輸入、輸出重定向?yàn)槲募?/p>
重定向是文件中的數(shù)據(jù)的格式要與程序讀取的格式一致
輸入重定向
#include<cstdio> #include<iostream> int main(){ freopen("1.txt","r",stdin);//參數(shù):文件名 讀寫(xiě)方式 流 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ù):文件名 讀寫(xiě)方式 流 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); /*直接寫(xiě)入輸出 后面的參數(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()); //要處理回車(chē) 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
上述內(nèi)容就是如何解析C++中IO流的輸入輸出流,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。