亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何解析C++中IO流的輸入輸出流

發布時間:2021-12-15 11:58:59 來源:億速云 閱讀:154 作者:柒染 欄目:開發技術

本篇文章為大家展示了如何解析C++中IO流的輸入輸出流,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

介紹

流: 若干字節數據從一端到另一端我們叫做流

例如:操作文件,從程序到文件,數據的流動的操作稱為流操作

流類體系

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

  • 流對象

  • 流運算符 >>  <<

輸入/出流對象 + 流運算符 >>  <<---處理輸入輸出的數據

字符流對象 + 流運算符 >>   <<   ---處理字符流

文件的對象 + 流運算符 >>  <<    ---讀寫文件

基本輸入、輸出流

istream 類---cin       輸入

ostream類---cout     輸出

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

  • cerr ---標準出錯

  • clog ---日志文件輸出

#include <iostream>
using namespace std;
void testostream()     //output 
{
	//freopen()
	cout << "標準輸出" << endl;		//cin/cout都可以重定向
	cerr << "標準錯誤輸出" << endl;	//不能重定向 當覺得程序可能出錯時用cerr輸出,標識作用
	clog << "日志文件輸出" << endl;  //可以重定向為文件
}
int main(){
 
    testostream();
}
/*輸出*/
 
/*標準輸出
 標準錯誤輸出
 日志文件輸出*/

freopen

把程序的輸入、輸出重定向為文件

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

輸入重定向

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

輸出重定向

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

字符類的處理

  • 正常的操作

  • 通過IO流對象調用成員函數的方式

單個字符和字符串的輸出處理

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

單個字符和字符串的輸入處理

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

注意不能用來處理string

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

格式控制字符

包含頭文件 <iomanip>

常用的格式控制,一種是調用成員函數方式,一種流控制字符去做

  • 設置有效位數: setprecision(n)

  • 設置精度: fixed 結合 setprecision 使用

tip:流控制字符---c++用來控制格式的操作

設置格式

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

進制輸出

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

對齊方式和數據的寬度問題        制表符 '\t'

限制每個數據的位數不足補空格 

1. 8位制表,不足8位  補空格       

2. 超過8位,按照16位制表 

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

上述內容就是如何解析C++中IO流的輸入輸出流,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

红河县| 江孜县| 汝城县| 日土县| 西乌| 当雄县| 攀枝花市| 贞丰县| 虎林市| 潜山县| 天津市| 府谷县| 德化县| 乌兰县| 巨鹿县| 冕宁县| 奉化市| 郯城县| 共和县| 珲春市| 神农架林区| 德钦县| 宁化县| 西乌珠穆沁旗| 瑞金市| 广平县| 肇庆市| 天长市| 卫辉市| 五原县| 酉阳| 海门市| 澄城县| 湾仔区| 太保市| 南溪县| 绥德县| 多伦县| 沈丘县| 峨边| 合肥市|