C++語言io流處理基本操作教程示例
一、輸入輸出流對象
cout
:標(biāo)準(zhǔn)輸出流
cerr
:標(biāo)準(zhǔn)出湊 和cout(只是用于如果是錯誤時要輸出的)
cin
: 標(biāo)準(zhǔn)輸入
流對象常用的處理函數(shù)
輸出字符 put()
輸入字符:get()
輸出字符串:write()
輸入字符串getline()
char ch; cin.get(ch); cout << ch<<endl; cout.put(ch); getchar();//用來消除回車的 cout << endl; //字符串的輸入輸出 char str[20] = "";//要初始化不然會出現(xiàn)輸出后最后無/0導(dǎo)致輸出燙燙燙... cin.getline(str, 20);//這里更安全只能輸入20個 多了只取前面20個 cout.write(str,20);
流控制字符
//就是以你制定的要求去輸出
要加上頭文件#incude<iomanip>
boolalpha
: bool類型輸出true或者false
setbase(n)
:設(shè)置整數(shù)為n的進制進行輸出 n只能為8 16 10
int num = 10; cout << setbase(8) << num << endl; cout << setbase(10) << num << endl; cout << setbase(16) << num << endl;
setfill(‘一個字符') : 設(shè)置填充字符
setw(n)
:設(shè)置輸出的寬度
int num = 10; cout<< setfill('s')<<setw(8) << num;
setprecision
:設(shè)值有效位數(shù)包括整數(shù)
double num = 3.14159; cout << setprecision(4) << num << endl; cout << setprecision(4) << num * 10 << endl;
前面一個是3.141后面一個是31.41
setiosflags(ios::left)//對齊方式左對齊setiosflagsios(ios:right)右對齊
二、字符流操作
頭文件 #include<sstream>
字符流一般使用stringstream的對象
sstream
包括 isringstream
ostingstream
stringstream
一般用stringstream(可讀可寫)
stringstream的成員函數(shù)
string.str()//獲取字符流對象中的字符串
string.str(const string&str)//改變字符流中的字符串
stringstream s("sdflk"); cout << s.str() << endl; s.str("ljsflk"); s.str(string("sdljf")); //二種都可以 一個是構(gòu)建一個string的無名對象傳字符串 cout << s.str() << endl;
字符流的一些基本操作
將數(shù)字轉(zhuǎn)換為字符串 int num =1234; cout<<to_string(num)<<endl//以字符串輸出num stringstream stream; stream << num;//將num流入stream這個類中 stream >> str;//stream流出到str這個字符串中 cout << str << endl;
同時使用一個流對象多次轉(zhuǎn)換的時候 必須使用clear清除同時也要二次流入在流出
不然是空流
stringstream stream; stream << num;//將num流入stream這個類中 stream >> str;//stream流出到str這個字符串中 cout << str << endl; string str2; //如果沒有clear函數(shù)就沒有把num流入到num2 stream.clear(); stream << num; stream >> str2; cout << str2 << endl;
三. 文件流流類
頭文件 #include<fstream>//ifstream 和ofstream
ofstream
:打開文件,寫文件
ifstream
:打開文件,讀操作
fstream
:可讀可寫
mode:
ios::in 讀的方式打開文件
ios::out 寫的方式打開文件
ios::app追加的方式寫文件
ios::ate 在已有的文件,文件指針指向文件末尾
ios::trunc文件不存在,創(chuàng)建文件
ios::binary二進制形式打開文件,默認(rèn)方式是ascii碼方式打開
ios::nocreat不創(chuàng)建的方式
ios::noreplace 不替換
組合方式使用
用的是位或
ios::in|ios::out 可讀寫
ios::out|ios::binary二進制寫的方式打開文件
判斷文件是不是打開成功(防御性操作)
is_open()
判斷打開是否成功
!文件對象 判斷打開文件是否成功
fstream File; File.open("1.tex", ios::in | ios::out | ios::trunc); if (!File.is_open()) { cout << "創(chuàng)建文件失敗" << endl; } if (!File) { cout << "創(chuàng)建文件失敗" << endl; }
文件的讀寫操作
fstream Read("1.txt",ios::in);//讀的方式打開文件///要有這個文件 fstream Write("2.txt",ios::out|ios::trunc); //寫的方式打開文件//沒有這個文件就創(chuàng)建一個 while (1) { char ch; Read.get(ch); if (Read.eof()) { break; } Write.put(ch); } Read.close(); Write.close();
四.文件指針定位
ifstream
://讀
istream&seekg(longt int pos);
istream&seekg(long int pos,ios_base::seekdir begin)
ofstream
://寫
ostream&seekp(long int pos):
ostream&seekp(long int pos,ios_base::seekdir begin);
//ios_base::seekdir//位置
ios::beg 文件開始
ios::cur 文件當(dāng)前
ios::end 結(jié)束位置
fstream read("1.txt", ios::in); read.seekg(5);//移動5個字節(jié)后 char ch = read.get();//讀取5個位置后的第一個 cout << ch << endl;
空格也算
文件的一些指向操作
fstream read("1.txt", ios::in); read.seekg(5);//移動5個字節(jié)后 char ch = read.get();//讀取5個位置后的第一個 cout << ch << endl; read.seekg(0, ios::beg); ch = read.get(); cout << ch << endl; read.seekg(-5, ios::end);//最后位置前面5個 ch = read.get(); cout << ch << endl;
以上就是C++語言io流處理基本操作示例的詳細內(nèi)容,更多關(guān)于C++語言io流處理的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
VSCode插件開發(fā)全攻略之打包、發(fā)布、升級的詳細教程
這篇文章主要介紹了VSCode插件開發(fā)全攻略之打包、發(fā)布、升級的教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05標(biāo)準(zhǔn)CSV格式的介紹和分析以及解析算法實例詳解
這篇文章主要介紹了標(biāo)準(zhǔn)CSV格式的介紹和分析以及解析算法實例詳解的相關(guān)資料,需要的朋友可以參考下2016-12-12使用C++中string實現(xiàn)任意長度的正小數(shù)、整數(shù)之間加減法方法實例
這篇文章主要介紹了利用C++中string函數(shù)實現(xiàn)任意長度的正小數(shù)、整數(shù)之間加減法方法實例,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧。2017-06-06C++實現(xiàn)LeetCode(58.求末尾單詞的長度)
這篇文章主要介紹了C++實現(xiàn)LeetCode(58.求末尾單詞的長度),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-07-07c語言生成隨機數(shù)的方法(獲得一組不同的隨機數(shù))
c語言生成一組不同的隨機數(shù),大家參考使用吧2013-12-12