cout輸出控制

cout輸出格式控制

如果要在輸出流中加入格式控制符則要加載頭文件:#include <iomanip>
  這裏面iomanip的作用比較多:
  主要是對cin,cout之類的一些操縱運算子,比如setfill,setw,setbase,setprecision等等。它是I/O流控制頭文件,就像C裏面的格式化輸出一樣.以下是一些常見的控制函數的:

dec 置基數爲10 相當於"%d"

hex 置基數爲16 相當於"%X"


oct 置基數爲8 相當於"%o"      //作用永久

sample:

cout<<12<<hex<<12<<oct<<12<<12;output 12c1414


setprecision(n) 設顯示小數精度爲n位 //作用永久

sample:

setf(ios:fixed);

cout<<setprecision(2)<<2.345<<endl; ouput 2.34 //注意先用setf(ios::fixed);否則結果自己測試下
     

setw(n) 設域寬爲n個字符 //作用臨時
  這個控制符的意思是保證輸出寬度爲n。如:
  cout<<setw(3)<<1<<setw(3)<<10<<setw(3)<<100; 輸出結果爲
  1 10100 (默認是右對齊)當輸出長度大於3時(<<1000),setw(3)不起作用。

setfill(c) 設填充字符爲c

  setioflags(ios::fixed) 固定的浮點顯示
  setioflags(ios::scientific) 指數表示 

sample cout<<setiosflags(ios::fixed)<<setprecision(2)<<2.345<<endl; output 2.34
  setiosflags(ios::left) 左對齊
  setiosflags(ios::right) 右對齊
  setiosflags(ios::skipws) 忽略前導空白
  setiosflags(ios::uppercase) 16進制數大寫輸出
  setiosflags(ios::lowercase) 16進制小寫輸出
  setiosflags(ios::showpoint) 強制顯示小數點
  setiosflags(ios::showpos) 強制顯示符號

sample: cout<<setiosflags(ios::uppercase)<<hex<<12<<15<<endl; output CF

cout<<setioflags(ios::showpoint)<<x<<endl;若float x=1,則output 1.000000 不使用直接輸出1

cout<<setiosflags(ios::showpos)<<1<<endl;output +1

//使用標準C++編寫
#include <iostream>
#include <iomanip>//
精度設置必須包括的頭文件

using namespace std;

int main()
{
double a=3.5;
int b=10;
//
方法一:操作符函數的格式控制
//cout.precision(2),
設置精度爲2
//right:
設置左對齊;fixed:控制浮點型輸出格式;
//setw(5):
設置輸出位寬爲5

cout<<right<<fixed<<setw(5)<<setfill('0')
<< setprecision(2)<<a<<endl; //
輸出結果爲03.50

//
方法二:IOS類成員函數的格式控制
cout.precision(4); //setprecision(4),
設置精度爲4
cout<<a<<endl; //
輸出結果爲3.5000

//setfill('0')
:設置填充字符爲'0'
//static_cast<double>(b):
將整型的b,
//
生成一個雙精度浮點型副本進行操作,而不改變其值和類型
cout<<fixed<<setfill('0')<<setprecision(2)
<< fixed<<static_cast<double>(b)<<endl;//
輸出10.00
return 0;
}


方法很多種啦,我們可以這樣寫: 
/*
一個使用填充,寬度,對齊方式的例子*/ 
#include <iostream.h> 
void main() 

    cout<<"
第一章"<<endl; 
    cout<<"    "; 
    cout.setf(ios::left);        //
設置對齊方式爲left 
    cout.width(7);              //
設置寬度爲7,不足用空格填充 
    cout<<"1.1"; 
    cout<<"
什麼是C語言"; 
    cout.unsetf(ios::left);      //
取消對齊方式,用缺省right方式 
    cout.fill(’.’);              //
設置填充方式 
    cout.width(30);              //
設置寬度,只對下條輸出有用 
    cout<<1<<endl; 
    cout<<"    ";               
    cout.width(7);              //
設置寬度 
    cout.setf(ios::left);        //
設置對齊方式爲left 
    cout.fill(’ ’);              //
設置填充,缺省爲空格 
    cout<<"1.11"; 
    cout<<"C
語言的歷史"; 
    cout.unsetf(ios::left);      //
取消對齊方式 
    cout.fill(’.’); 
    cout.width(30); 
    cout<<58<<endl; 
    cout.fill(’ ’); 
    cout<<"
第二章"<<endl; 

   
我們多次設置了寬度,爲的是使我們的間距能一致,也使用了對齊方式,爲的是使我們的數據能對齊顯示,看起來美觀。我們還使用了填充方式。我們下面用操縱算子來實現也是可以的。 
/*
一個使用填充,寬度,對齊方式的例子*/ 
#include <iomanip.h> 
void main() 

    cout<<"
第一章"<<endl; 
    cout<<"    "; 
    cout<<setiosflags(ios::left)<<setw(7);        //
設置寬度爲7left對齊方式 
    cout<<"1.1"; 
    cout<<"
什麼是C語言"; 
    cout<<resetiosflags(ios::left);                //
取消對齊方式 
    cout<<setfill(’.’)<<setw(30)<<1<<endl;        //
寬度爲30,填充爲’.’輸出 
    cout<<setfill(’ ’);                            //
恢復填充爲空格 
    cout<<"    "; 
    cout<<setw(7)<<setiosflags(ios::left);        //
設置寬度爲7left對齊方式 
    cout<<"1.11"; 
    cout<<"C
語言的歷史"; 
    cout<<resetiosflags(ios::left);                //
取消對齊方式 
    cout<<setfill(’.’)<<setw(30)<<58<<endl;        //
寬度爲30,填充爲’.’輸出     
    cout<<setfill(’ ’)<<"
第二章"<<endl; 

   
我們輸出了同樣的效果,不過依我的性格,我更喜歡用操縱算子來進行格式化輸出。最後我們看看浮點數的格式輸出,如下例: 
/*
關於浮點數的格式*/ 
#include <iostream.h> 
void main() 

    float f=2.0/3.0,f1=0.000000001,f2=-9.9; 
    cout<<f<<’ ’<<f1<<’ ’<<f2<<endl;      //
正常輸出 
    cout.setf(ios::showpos);              //
強制在正數前加+ 
    cout<<f<<’ ’<<f1<<’ ’<<f2<<endl; 
    cout.unsetf(ios::showpos);            //
取消正數前加+ 
    cout.setf(ios::showpoint);            //
強制顯示小數點後的無效
    cout<<f<<’ ’<<f1<<’ ’<<f2<<endl; 
    cout.unsetf(ios::showpoint);          //
取消顯示小數點後的無效
    cout.setf(ios::scientific);          //
科學記數法 
    cout<<f<<’ ’<<f1<<’ ’<<f2<<endl; 
    cout.unsetf(ios::scientific);        //
取消科學記數法 
    cout.setf(ios::fixed);                //
按點輸出顯示 
    cout<<f<<’ ’<<f1<<’ ’<<f2<<endl; 
    cout.unsetf(ios::fixed);              //
取消按點輸出顯示 
    cout.precision(18);                  //
精度爲18,正常爲
    cout<<f<<’ ’<<f1<<’ ’<<f2<<endl; 
    cout.precision(6);                    //
精度恢復爲

   
同樣,我們也一樣能用操縱算子實現同樣的功能: 
/*
關於浮點數的格式*/ 
#include <iomanip.h> 
void main() 

    float f=2.0/3.0,f1=0.000000001,f2=-9.9; 
    cout<<f<<’ ’<<f1<<’ ’<<f2<<endl;      //
正常輸出 
    cout<<setiosflags(ios::showpos);      //
強制在正數前加+ 
    cout<<f<<’ ’<<f1<<’ ’<<f2<<endl; 
    cout<<resetiosflags(ios::showpos);    //
取消正數前加+ 
    cout<<setiosflags(ios::showpoint);    //
強制顯示小數點後的無效
    cout<<f<<’ ’<<f1<<’ ’<<f2<<endl; 
    cout<<resetiosflags(ios::showpoint); //
取消顯示小數點後的無效
    cout<<setiosflags(ios::scientific);  //
科學記數法 
    cout<<f<<’ ’<<f1<<’ ’<<f2<<endl; 
    cout<<resetiosflags(ios::scientific); //
取消科學記數法 
    cout<<setiosflags(ios::fixed);        //
按點輸出顯示 
    cout<<f<<’ ’<<f1<<’ ’<<f2<<endl; 
    cout<<resetiosflags(ios::fixed);      //
取消按點輸出顯示 
    cout<<setprecision(18);              //
精度爲18,正常爲
    cout<<f<<’ ’<<f1<<’ ’<<f2<<endl; 
    cout<<setprecision(6);                //
精度恢復爲

 
c/c++系統中除了標準的輸入輸出外,還提供了更多的輸入函數。這寫函數主要有getch(),getche(), 
getchar
(),cin.get(),putch(),putchar(),cout.put(),gets(),cin.getline(),puts()
。另外
還有些爲了讓緩衝區不影響程序的正確操作的緩衝去的操作,如:cin.putback(),fflush(stdin),cout.flush().我們
做一下簡單的說明。 
    1
getch()getche(),非緩衝式輸入,從鍵盤讀入一個字符。getch()讀入字符不顯示。有conio.h支持。 
    2
cin.get(),getchar(),緩衝式輸入,從鍵盤讀入一個字符,並顯示。getchar()stdio.h支持,cin.get()iostream.h支持。 
    3
putch()putchar(),非緩衝式輸出,輸出一個字符到顯示器。putch()conio.h支持,putchar()stdio.h支持。 
    4
cout.put(),緩衝式輸出,輸出一個字符到顯示器。由iostream.h支持。 
    5
gets()cin.geline(),緩衝式輸入,讀入一字符串(包括空格,不包括最後的回車),gets()stdio.h支持,cin.getline()iostream.h支持。 
    6
puts(),非緩衝輸出,輸出一個字符串,由stdio.h支持。 
    7
cin.putback(),把一個字符送回輸入緩衝區。 
    8
fflush(stdin),清除輸入緩衝區操作。無法清除cin.get()等帶來的操作。 
    9
cout.flush(),清楚輸出緩衝區。 
   
在這裏我們稍微說一下輸入/輸出緩衝區,這是爲了減少程序訪問io帶來中斷而設的一段空間。當程序滿足某個刷新條件時,那就將清理緩衝區。具體條件爲: 
    1
、輸入緩衝區 
a
,程序要求輸入時,按下了回車鍵。 
b
,遇到程序結束。 
c
,遇到下一條輸入語句。 
d
,遇到清除緩衝區操作 
e
,緩衝區溢出 
    2
、輸出緩衝區 
a
,輸出緩衝區溢出 
b
,遇到下一條輸入語句 
c
,使用刷新緩衝區迫使清除 
d
,程序結束。 
   
緩衝區操作有時會帶來程序的不正確的輸入,如前面說的scanf(),在連續輸入的時候,會把一個回車賦給下一個字符變量。我們操作的時候一定要注意。

使用標記進行格式設置的setf()函數

格式化的各個方面,
要使用各種格式只需把該位設置爲1 即可,setf 函數就是用來設置標記的成員函數,使用該函數需要一個或兩個在c++
中定義的位的常量值作爲參數,這些位的常量值在下面介紹。

1、c++在ios類中定義了位的常量值,這些值如下:
a、ios::boolalpha使布爾值用字符表示
b、iso::showbase顯示進制的基數表示即16進位以0x開始,8進制以0開始,
c、ios::showpoint顯示末尾的小數點,
d、、ios::uppercase使16進制的a~f用大寫表示,同時0x還有科學計數的字母e都用大寫表示,
e、ios::showpos在十進制的正數前面顯示符號+

注意這些常量都是ios 類中定義的,所以使用他們時需要加上ios::限定符

比如:cout.setf(ios::showbase);注意使用
setf函數時需要用對象來調用,因爲它是流類的成員函數。

2、使用帶兩個參數的setf()函數:setf()函數不但可以帶有一個參數,還可以帶有兩個參數。帶兩個參數的setf()函數的
第一個參數爲要設置的位的值,第二個參數爲要清除的位的值。

參數說明如圖所示
在C++中有一個受保護的數據成員,其中的各位分別控制着
3、用setf()函數設置的格式需要使用對應的unsetf()函數來恢復以前的設置,比如setf(ios::boolalpha)將使布爾值以字
符的形式使用,如再使用unsetf(ios::boolapha)則又將使布爾值以數字的形式使用。
帶兩個參數的setf函數可以使用第1 個參數爲0 的unsetf 函數來恢復其默認值,比如unsetf(0,ios::basefield)或直接使用unsetf(ios::basefield),注
意在visual C++中不能使用第一個參數爲0 的unsetf 函數,只能使用第二種形式。

 

格式輸出

在輸出數據時,爲簡便起見,往往不指定輸出的格式,由系統根據數據的類型採取默認的格式,但有時希望數據按指定的格式輸出,如要求以下六進制或八進制形式輸出一個整數,對輸出的小數只保留兩位小數等;有兩種方法可以達到此目的。一種是使用控制符;另一種是使用流對象的有關成員函數。分別敘述如下:

1、 用控制符控制輸出格式







應當注意:

這些控制符是在頭文件iomanip中定義的,因而程序中應當包含頭文件iomanip。通過下面的例子可以瞭解使用它們的方法,

[indent]例2 用控制符控制輸出格式


#include <iostream>
#include <iomanip> //不要忘記包含此頭文件


using namespace std;
int main()
{
int a;
cout<<"input a:";
cin>>a;
cout<<"dec:"<<dec<<a<<endl; //以上進制形式輸出整數
cout<<"hex:"<<hex<<a<<endl; //以十六進制形式輸出整數a
cout<<"oct:"<<setbase(8)<<a<<endl;//以八進制形式輸出整數a
char *pt="China";
//pt指向字符串”China”
cout<<setw(10)<<pt<<endl; //指定域寬爲10,輸出字符串
cout<<setfill('*')<<setw(10)<<pt<<endl;//指定域寬10,輸出字符串,空白處以“*”填充
double pi=22.0/7.0; //計算pi
cout<<setiosflags(ios::scientific)<<setprecision(8);//按指數形式輸出,8位小數
cout<<"pi="<<pi<<endl; //輸出pi
cout<<"pi="<<setprecision(4)<<pi<<endl;//改爲4位小數
cout<<"pi="<<setiosflags(ios::fixed)<<pi<<endl;//改爲小數形式輸出
return 0; }

運行結果如下



inputa:34 (輸入a的值)
dec:34 (十進制形式)
hex:22 (十六進制形)
oct:42 (八進制形式)
China (域寬爲10)
***** China (域寬爲10,空白處以'*'填充)
pi=3.14285714e+00 (指數形式輸出,8位小數)
pi=3.1429e+00) (指數形式輸小,4位小數)
pi=3.143 (小數形式輸出,梢度仍爲4)


2.用流對象的成員函數控制輸出格式




除了可以用控制符來控制輸出格式外,還可以通過調用流對象COUt中用於控制輸出格式的成員函數來控制輸出格式。用於控制輸出格式的常用的成員函數見表4。



流成員函數setf和控制符setiosflags括號中的參數表示格式狀態,它是通過格式標誌來指定的。格式標誌在類ios中被定義爲枚舉值。因此在引用這些格式標誌時要在前面加上類名ios和域運算符“::”。格式標誌見表5。





[/indent][indent]例3 用流控制成員函數輸出數據。


#include <iostream>
using namespace std;
int main()

{
int a=21;
cout.setf(ios::showbase); //設置輸出時的基數符號
cout<<"dec:"<<a<<endl; //默認以十進制形式輸出a
cout.unsetf(ios::dec); //終止十進制的格式設置
cout.setf(ios::hex); //設置以十六進制輸出的狀態
cout<<"hex:"<<a<<endl; //以十六進制形式輸出a
cout.unsetf(ios::hex); //終止十六進制的格式設置
cout.setf(ios::oct); //設置以八進制輸出的狀態
cout<<"oct:"<<a<<endl; //以八進制形式輸出a
cout.unsetf(ios::oct); //終止以八進制的輸出格式設置
char *pt="China"; //pt指向字符串”china”
cout.width(10); //指定域寬爲10
cout<<pt<<endl; //輸出字符串
cout.width(10); //指定域寬爲10
cout.fill('*'); //指定空白處以'*'填充
cout<<pt<<endl; //輸出字符串
double pi=22.0/7.0; //計算pi
cout.setf(ios::scientific);//指定用科學記數法輸出
cout<<"pi="; //輸出"pi="
cout.width(14); //指定域寬爲14
cout<<pi<<endl; //輸出"pi
cout.unsetf(ios::scientific); //終止科學記數法狀態
cout.setf(ios::fixed); //指定用定點形式輸出
cout.width(12); //指定域寬爲12
cout.setf(ios::showpos); //在輸出正數時顯示“+”
cout.setf(ios::internal); //數符出現在左側
cout.precision(6); //保留6位小數
cout<<pi<<endl; //輸出pi,注意數符“+”的位置
return 0;}

運行情況如下:



dec:21 (十進制形式)
hex:Oxl5 (十六進制形式,以0x開頭)
oct:025 (八進制形式,以O開頭)
China (域寬爲10)
*****china (域寬爲10,空白處以'*'填充)
pi=**3.142857e+00 (指數形式輸出,域寬14,默認6位小數)
****3.142857 (小數形式輸㈩,精度爲6,最左側輸出數符“+”)


說明:




1、成員函數width(n)和控制符setw(n)只對其後的第一個輸出項有效。如果要求在輸出數據時都按指定的同一域寬n輸出,不能只調用一次width(n),而必須在輸出每一項前都調用一次width(n)。


2、在表5中的輸出格式狀態分爲5組,每一組中同時只能選用一種(例如,dec,hex和oct中只能選一,它們是互相排斥的),在用成員函數setf和控制符setiosflags設置輸出格式狀態後,如果想改設置爲同組的另一狀態,應當調用成員函數unsetf(對應於成員函數setf)或resetiosflags(對應於控制符setiosflags),先終止原來設置的狀態。然後再設置其他狀態。

同理,程序倒數第8行的unsetf函數的調用也是不可缺少的。讀者不妨上機試一試。


3、用setf函數設置格式狀態時,可以包含兩個或多個格式標誌,由於這些格式標誌在iOS類中被定義爲枚舉值,每一個格式標誌以一個二進位代表,因此可以用“位或”運算符“I”組合多個格式標誌


4、可以看到:對輸出格式的控制,既可以用控制符(如例2),也可以用cout流的有關成員函數(如例3),二者的作用是相同的。控制符是在頭文件iomanip中定義的,因此用控制符時,必須包含iomanip頭文件。cout流的成員函數是在頭文件iostream中定義的,因此只需包含頭文件iostream,不必包含iomanip。許多程序人員感到使用控制符方便簡單,可以在一個cout輸出語句中連續使用多種控制符。


5、關於輸山格式的控制,在使用中還會遇到一些細節問題,不可能在這裏全部涉及。在遇到問題時,請查閱專門手冊或上機試驗一下即可解決。

用於char類型的字符數組的輸入流類的成員函數

使用輸入流類的成員函數進行輸入:
注意:以下這些成員函數都只能用於char類型的字符數組,而不能用於string類型的對象。


1、使用get()函數輸入單個字符:輸入單個字符的get()函數都是類istream 中的成員函數,調用他們需要使用類的對象
來調用,該函數有兩個原型,即get(char &ch)和get(void)。
a、get(char &ch)函數:該函數返回調用對象的引用,這裏要注意該函數的參數類型必須要是char類型的,不能是int
型變量,比如cin.get(a)其中參數a 只能是char 類型,不能是int 型,如果是int 型則會出現錯誤。該函數可以連
續輸入,即cin.get(a).get(a);
b、get(void)函數:該函數反回int型的值,調用該get函數時不需要使用參數。該函數不能連續輸入,比如cin.get().get()
就是錯誤的。
c、兩個get函數都接收輸入的單個字符,且不跳過空白符號和回車換行符。如果輸入了2個以上的字符,則以後的
字符保存在輸入流中,留給下一次輸入。比如有char a; cin.get(a);cout<<a; cin.get(a); cout<<a;如果輸入a並按回車
的話,則第二次的get調用將不會再提示輸入字符,而是接受了第一次輸入的單個字符a後面的回車換行了,所
以最後只輸入一次,並輸出a 再換行。同樣如果連續輸入兩個字符比如ad 則第一個字符a 賦給第一個變量,第
二個字符d賦給第二個變量,同樣不會出現提示兩次輸入的情況,這不是我們所預期希望的效果。同樣get()函數
有同樣的笑果,即char a; a=cin.get(); cout<<a; a=cin.get(); cout<<a;如果輸入a並按回車,有和get(char &ch)同樣的
笑果。注意使用>>操作符輸入時將忽略掉空格和回車換行符等符號,而get函數則不會。解決上述問題的方法是
在第二次輸入前使用ignore()函數讀取並丟棄剩下的字符,這樣就會提示兩次輸入。


2、使用get和getline函數輸入字符串:
a、字符串輸入的get和getline函數原型如下:get(char *, int ,char); get(char* ,int); getline(char*,int ,char); getline(char*,int);
其反回類型都爲istream &也就是說這幾個函數都可以拼接輸出。其中兩個參數的函數輸入指定長度的字符串,第二
個參數的數目要比將要輸入的字符數目大1,因爲最後一個字符將作爲字符串結尾的字符。帶有三個參數的函數的
第三個參數是分界符字符,也就是說當輸入時遇到第三個字符就不會再輸入後面的字符了,即使輸入的字符串沒有
達到指定的長度。
b、get 與getline 的區別是get 函數將分界符留在輸入流中,這樣下次再輸入時將輸入的是這個分界符。而getline 則是
讀取並丟棄這個分界符。比如cin.get(a,3,’z’)如果輸入abz 則字符z 將留在輸入流中,等待下一次輸入,比如在get
函數後接着有cin>>b;則字符z將賦給變量b,而不會再次提示輸入。
c、輸入的字符數超過了指定數量長度時的處理情況:對於getline函數來說,如果輸入的字符數大於指定的字符數的長
度,且最後一個字符不是分界符時,將設置failbit 位。比如cin.getline(a,3,’z’)如果輸入abdc,則會設置failbit 位,而
如果輸入abzde則不會設置failbit位,因爲雖然輸入超過了指定的長度,但是最後一個字符是分界符z,所以不會設
置failbit位,而會將分界字符z後面的字符留在輸入流中,留給下一次輸入。而對於get函數當輸入的字符數超過了
指定的長度時則不會設置failbit位,對於get函數可以使用peek()函數來檢查是否程序是正常結束輸入。如果使用get
函數輸入超出指定數目的字符時,多於的字符將作爲下一次輸入的字符,而對於getline函數而言則會關閉下一次輸
入,因爲getline 函數在輸入的字符數超過了指定的數量時將設置狀態位failbit,在狀態位被清除前輸入會被關閉,
除非被重設。對於這兩個函數而言,當達到文件尾時都將設置eofbit位,流被破壞時設置badbit位。
d、輸入是空字符時的處理情況:對於get 函數而言,如果輸入的是一個空字符則會設置failbit 位,但對於getline 函數
來說則不會設置該位。比如cin.get(a,3);這時如果輸入時直接按下回車的話將使get函數設置failbit位,而對於getline
函數而言則不會設置該位。
e、對於以上的get 和getline 函數,不管是輸入的是單個字符還是字符串,都需要使用ignore 函數來讀取並丟棄多餘的
輸入字符,以使後面的輸入程序能正常的工作。


3、read()函數:函數原型爲iostream& read(const char* addr,streamsize n)。調用方法爲cin.read(a,144);表示輸入144個
字符放到地址從a 開始的內存中,如果還未讀取144 個字符就到達了文件末尾,就設置ios::failbit。read 函數與get
和getline不同的是read函數不會在輸入後加上空值字符,與就是說輸入的數目不必比指定的數目少1,也就是不能
將輸入的字符轉換爲字符串了。read函數可以拼接。


4、readsome()函數:原型爲iostream& readsome(char* addr,streamsize n)。表示把n個字符放到地址從addr開始的內存中,
該函數和read函數差不多,區別在於,如果沒有讀取n個字符,則設置文件結束狀態位ios::eofbit。


5、write()函數:原型爲iostream& write(const char* addr,streamsize n);表示把從地址addr開始的n個字符寫入到流中。


6、peek()函數:peek 函數反回輸入流中的下一個字符,但不抽取輸入流中的字符,也就是說他使得能夠查看下一個輸
入字符。


7、gcount()函數:反回最後一個非格式化抽取方法讀取的字符數。非格式化抽取方法即get 和getline 這樣的函數,>>
這個運算符是格式化抽取方法。


8、strlen()函數:計算數組中的字符數,這種方法比使用gcount函數計算字符數要快。


9、注意:以上的函數都是輸入流類的成員函數,使用他們時需要使用輸入流類的對象來調用,比如cin.get()等。


再次提醒:以上的函數只適合於char類型的數組,不適用於string類型的對象。比如string a; cin.get(a,3);則將發生錯

誤,因類string類型的對象a無法轉換爲char類型的數組。 



https://blog.csdn.net/wolinxuebin/article/details/7490113

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章