2010-02-12 52 views
0

好吧,我很初學,並試圖使用指針將字符串輸入到char數組中。然後顯示我寫的內容。使用數組和指針輸入字符串

有兩件事我想問。首先,如果我不想爲數組指定大小,只是想擴展爲包含我輸入的所有字符串,那是怎麼回事? 第二次,我輸入字符串後,顯示它......它不會包含字之間的空格...... 就像我輸入「我愛餅乾」...它會顯示爲「ilovecookies」..所以如何解決?

下面是我的一些代碼...

#include <iostream> 

using namespace std; 

int main() 
{ 

    char *strP , str[100] ; 
    strP = str ; 

    for(int i =0 ; i<10 ; i++) cin >> *(strP+i) ; 

    for(int i =0 ; i<10 ; i++) cout << *(strP+i) ; 


    return 0; 
} 

對不起我的愚蠢的問題,我是初學者這種語言說,不希望在移動之前錯過的事情。

在此先感謝。

回答

1

1)如果要動態調整字符串大小,則需要使用字符串對象或new

2)它不包含空格,因爲cin一次只讀一個單詞。有幾種方法可以解決這個問題。我會使用的是切換到使用scanf和printf而不是cin和cout。或者,正如vivin說,你可以使用的getchar()

編輯:語法

+0

使用getline處理帶有空格的輸入。除非你有更好的理由,否則不要使用scanf和printf;他們使用可變參數,因此編譯器無法爲您捕獲類型錯誤,並且它們是緩衝區溢出錯誤的來源。 – 2010-02-12 19:00:15

1

cin遇到空間時總是停下來。如果您要逐字輸入字符,請嘗試使用getchar()

1

數組不能改變它們的大小。您應該使用std::vector<char>,或者對於使用std::string的字符串更好。