2013-08-18 23 views
0

我剛剛開始學習C++,並且我對字符串感到困惑。 我首先需要一個輸入單詞,並將每個char存儲在char-Array的某個位置。 但字符串基本上是char-數組,不是嗎? 但是,這並不工作:C++字符串單個字符

char word[]; 
cin >> word[]; 

而這個工作,但我不知道如何填寫的字符爲Array。

string s; 
cin >> s; 

到目前爲止,我已經試過這一點,但我得到了一個編譯錯誤:

string s; 
cin >> s; 
char word[] = s; 

對不起,我剛剛開始編程,我不知道如果任何人有我一些建議:)

+2

你爲什麼不使用字符串's'? char數組的用途是什麼? – juanchopanza

+0

@juanchopanza「我剛開始學習C++」可能是一次學習練習,在內存基礎和原語中敲擊 –

+0

'std :: string'是一個庫類。數組是內置類型,內置了很多功能。 – chris

回答

0
char word[]; 

您需要給出數組的大小。然後,你可以直接輸入它。如果您希望將std::string複製到字符數組中,則需要使用安全字符串複製功能,如strncpy。例如 -

char word[10]; 
std::string str("Hello"); 

strncpy(word, str.c_str(), sizeof(word)); 

但是,推薦在C++中使用std::string,而不是使用字符數組。

+0

由於數組大小已知爲10,而'string'包含5個字符,因此不需要使用'strncpy'。如果你使用'strncpy',你必須**檢查它是否產生了一個有效的字符串;如果源字符串(不包括終止的''\ 0'')具有足夠的字符來填充目標數組,則結果中不會有終止''\ 0'。盲目使用該陣列會導致問題。 –

+1

是的,在這個例子中。但我只希望OP使用字符串安全複製功能。 – Mahesh

+0

聳聳肩。寫一個需要它的例子,解釋它爲什麼需要它,並正確使用它。如果你沒有正確使用它們,使用「安全」功能對你或任何其他人都沒有好處。 –