2013-10-31 106 views
1

我習慣於使用Java進行編程,現在正在做一些涉及一點C++的事情。char []和C++中的字符串有什麼區別?

我實際上並沒有學習C++,實際上我使用的是彙編代碼,它是我不知道的C++部分。

我已經看過我講師(大學)過去的代碼,並且定義了一個變量,它包含我(作爲Java開發人員)會調用一個字符串,他將其聲明爲char [](我假設這意味着char /字符數組)。

char get1[] = "Give me the first number:"; 

C++使用char數組來表示字符串還是它們不同?

對於我使用的極其有限的C++,我應該假設它們是相同的,並且像我的講師那樣使用char數組?

所有我會用這個字符串做的是將它打印到屏幕上作爲某個點(如果有人知道intel x86程序集,使用printf)。我應該使用char數組嗎?

謝謝。

+1

http://stackoverflow.com/questions/1287306/difference-between-string-and-char-types-in-c –

+2

你是什麼意思* string *? 'std :: string'或'char const * str =「我是一個字符串文字」;'? – Praetorian

+0

以'\ 0'結尾的'[const] char'數組被稱爲* C-string *。 'std :: string'中有轉換構造函數,它們需要一個C字符串,但它們不是一回事。另外,一個明顯的區別是C字符串的長度總是比由該C字符串構造的std :: string高出一個(因爲終止字符 - 即'strlen(str)> std :: string( STR).size()')。 – thokra

回答

2

A std::string是一個具有功能的類。字符數組就是這樣 - 一個字符數組。

你可以通俗地調用一個以null結尾的char數組(如你的例子)一個C風格的字符串,但這只是一個名字。

1

char數組當然是一種字符串 - C++程序員和API文檔經常將char數組稱爲「c字符串」或「c樣式字符串」(將它們與CStrings區分開來,這是Microsoft概念和某些東西完全不同)。

關於C++作爲一種語言最討厭的事情之一是它定義一個單一字符串的概念本身的語言,所以有很多構造都實現了字符串。 std :: string(或者,如果你使用unicode,你應該,std :: wstring)是最常見的實現,是跨平臺的,並且此時語言的一部分,但是如果你使用微軟代碼還會看到調用類型爲BSTR,_bstr_t,CComBSTR和CString的字符串的API - 所有這些也都是字符串類型!

一般來說,如果給出選擇,我會使用std :: [w]字符串,並根據需要將字符串轉換爲(w)char-arrays - 儘管如果您的字符串操作非常簡單,並且您的輸出正在無論如何,必須是一個C字符串,用C字符串來完成所有事情並不奇怪。

+0

'std :: wstring'不是unicode字符串。它是一個'wchar_t'類型的字符串,'wchar_t'在Windows上僅與UCS-2兼容。在Linux上,一個Unicode字符串將是'std :: string',通常使用UTF-8編碼。 –

相關問題