C 中cout《字元陣列名為什麼能輸出字串

時間 2021-09-11 22:33:37

1樓:最大的寶寶

如果你想輸出ps的地址,可以使用&ps,而ps的用法,在c++實現中是輸出它指向的內容。“流”使用很抽象的類别範本來實現,**雖然是公開的,但至少先把stl或atl的基礎弄懂才可能讀懂它

2樓:匿名使用者

我認為cout是類ostream的物件,而ostream的定義是typedef basic_ostreamostream,顯然ostream類是類别範本basic_ostream的一個例項,ostream操作物件都是char型別。那麼cout作為類ostream的例項,必然也是以char為預設操作物件。從人的使用習慣來看也是一樣,既然呼叫了cout一般是為了輸出字元而不是一個地址。

如果你是cout的開發者肯定首先想到的是輸出字串,而不是一個地址。

3樓:攻扶嘉

首先我們要明確一點,在這兩行的*號的意義是不一樣的,前面一行是定義了一個指標陣列和一個指標變數;第二行是讀地址符。

*s[1]指讀取陣列s的第二行首字元

ps本身是指向陣列s的一級指標,所以,輸出ps就像輸出用一級指標定義的一個字串一樣,會輸出它的內容。

4樓:匿名使用者

因為庫函式裡對cout過載了,允許這種輸出

c++怎麼用cout輸出字串

5樓:狼道刀

如果你是用char定義了字元陣列的話, 直接輸出字元陣列名就行了,如果你用的string類, 同樣直接輸出。

**如下:

#include

#include

using namespace std;

int main()

擴充套件資料

c++的輸入輸出流:

輸入和輸出是資料傳送的過程,資料如流水一樣從一處流向另一處(單方向、一維)。c++形象地將此過程稱為流(stream)。c++的輸入輸出流是指由若干位元組組成的位元組序列,這些位元組中的資料按順序從一個物件傳送到另一物件。

實際上,在記憶體中為每一個資料流開闢一個記憶體緩衝區,用來存放流中的資料。當用cout和插入運算子“<<”向顯示器輸出資料時,先將這些資料送到程式中的輸出緩衝區儲存,直到緩衝區滿了或遇到endl,就將緩衝區中的全部資料送到顯示器顯示出來。

在輸入時,從鍵盤輸入的資料先放在鍵盤緩衝區中,當按回車鍵時,鍵盤緩衝區中的資料輸入到程式中的輸入緩衝區,形成cin流,然後用提取運算子“>>”從輸入緩衝區中提取資料送給程式中的有關變數。總之流是與記憶體緩衝區相對應的,緩衝區中的資料就是流。

在c++中,輸入輸出流被定義為類。c++的i/0庫中的類稱為流類(streamclass)。用流類定義的物件稱為流物件。

cout和cin並不是c++語言中提供的語句,它們是iostream類的物件。

正如c++並未提供賦值語句,只提供賦值表示式,在賦值表示式後面加分號就成了c++的語句,我們習慣稱之為賦值語句。

在c語言中常用printf和scanf進行輸出和輸入,printf和scanf是c語言庫函式中的輸入輸出函式,一般也習慣地將由printf和scanf函式構成的語句稱為printf語句和scanf語句。在使用它們時,對其本來的概念要有準確的理解。

6樓:笨笨地攤貨

#include #include //不要忘記包含此標頭檔案using namespace std;int main()

{  int a;  cout<<"input a:";

cin>>a;  cout<<"dec:"

"

//pt指向字串"china"

cout

cout

//計算pi值

//按指數形式輸出,8位小數

cout

cout<<*p2<輸出結果如下:0046f020才是p的值,0013ff7c實際為&p.

aabcd

0013ff7c

0013ff7c

0046f020

press any key to continue

8樓:

#include

using namespace std;

void main()

c++中,陣列名代表首元素的地址,那為何cout字元陣列名輸出的確實整個陣列?而不是首元素?

9樓:匿名使用者

cout不是

baiiostream中的嗎du?

#include

using namespace std;

int main()

為什麼c++中無法用cout輸出字串

10樓:風若遠去何人留

用cout輸出字串是可以的。大前提是當前名空間需要是std。即**中使用了

using namespace std;

或者單獨宣告使用cout,即**中有

using std::cout;

否則需要使用

std::cout進行輸出。

在c++中有兩種字串的概念。

1 string 類物件字串。需要使用std名空間,或者宣告使用std::string。

定義時string s1 = "string";

輸出時cout<

2 字元陣列。

c語言中字串以字元陣列形式儲存,並約定以\0作為結束符。

當定義char s2[100] = "char array"; 時,輸出時使用

cout << s2;

11樓:欲成仙奈何為魔

標頭檔案寫沒寫錯?名稱空間有沒有宣告?最容易犯的錯誤就是這兩個了。最好把程式全發上來。還有,編譯器有沒有說錯誤?

12樓:匿名使用者

沒有整個的程式,特別是main函式,不知道你出的什麼錯誤,或者和整個函式無關的錯誤呢?

因為單從這個函式看,好像沒有太大問題。

13樓:匿名使用者

c++的標準輸出流就是cout,你的用法也是對的!

是不是沒有使用作用域說明:using namespace std;?

你給個完整的程式,或者把錯誤原因發一下?

14樓:匿名使用者

while(p)

15樓:萌寵奇趣秀

使用cout和cin必須呼叫標頭檔案

#include"iostream"

using namespace std;

16樓:匿名使用者

#include

using namespace std;

17樓:

標頭檔案加一個#include試試

18樓:倒黴熊

首先 這樣是可以輸出的

請問:提示的什麼錯誤,還是什麼也沒有輸出啊

你怎麼賦值的??

c++中,如果cout 或者cin char型別的陣列名,指標,都會把字串輸出,而不是輸出地址,

19樓:風若遠去何人留

對於char*或者char 會輸出字串如果是string型別,如果你輸出string本身,那麼輸出的是字串

如果你輸出的是string陣列的陣列名,那麼輸出的是地址。

比如string a[2] = ;

如果cout>>a[0];

那麼輸出的就是 111111

如果用cout << a;

那麼輸出的就是a的地址。

20樓:匿名使用者

char*是字串,最後面有'\0'結束標誌,所以輸出的是字串,這個比較特別吧,string就跟這不一樣了

c 中字元陣列,如何轉成字串啊

97樂於助人 如果你想把一個字串變成陣列,你只需要將字串初始化為陣列變數的值即可。例如 char c 10 this is 齋傲雲 在c 裡字串在記憶體的儲存方式就是按字串陣列的形式儲存的,所以不用轉換! du瓶邪 用cstring的getbuffer函式返回一個存放字元的頭指標,用一個char 來...

C 對字元陣列排序,c 中對於幾組字串的升序或降序排序怎麼做???

風若遠去何人留 與其它排序類似,字元陣列排序也是根據一定演算法,如冒泡法,將各個項值進行比較,並通過賦值交換位置即可。對於字元陣列,賦值和比較均與一般物件或變數不同。1 字元陣列比較 需要呼叫strcmp函式。int strcmp char s1,char s2 按照ascii碼比較,當s1和s2相...

c 中怎樣判斷兩個字元型陣列元素相等

狼道刀 直接用c 庫函式strcmp char a,char b 就可以比較出兩字串是否相等,對於字元型陣列也是一樣的,只要分別帶入陣列地址就可以了。函式返回0 表示相等 大於0表示字串a大於字串b 反之小於則串a小於b。而這裡的庫函式做的比較是一次比較字串中相同位置的單個字元的ascii得出的結果...