2015-01-05 73 views
-2

在下面的代碼片段中,我無法理解LineA發生錯誤的原因,但Line B中沒有錯誤?C++:如何修改全局字符串?

//Global 
char strA[80] = "A string to be used for demonstration purposes"; 

int t=60; 

int main(void) 
    {  

     strA[80] = "I am trying to modify the source"; //Line A, gives error 

     t=60; //Line B, no errors 

    } 

錯誤是:

2智能感知:類型的值 「爲const char *」 不能被分配給 類型的實體 「字符」 C:\用戶\胡\ cplustutorial .cpp 69 12 CPLUStutorial

我沒有字符串作爲const,所以爲什麼會出現這個錯誤?

與MS VS編譯2010年

+1

如果您認爲這有任何與字符串是全球性的,使其本地第一。 – juanchopanza

回答

2

char strA[80] = "A string to be used for demonstration purposes";初始化您的數組。

這個strA[80]表示該數組中的單個字符。如何將多個字符存儲在單個字符中。使用strcpy複製新字符串。

+0

哎呀,我錯過了這一點。 – user3891236

+0

@ user3891236 - 這很好。 – Sadique

0

您試圖將strA(偶然不存在)的第80個元素指定爲const char*,而不是char[]本身。此外,您將問題標記爲C++,那麼爲什麼使用char[]而不是std::string

-1

您必須瞭解字符串(字符串文本)的類型爲const char *,並且您試圖將其存儲在單個字符(char[80])中。這就是爲什麼它給你錯誤。查看http://www.stackoverflow.com/questions/20294015/

+1

請注意,字符串文字的類型是「const char [N]」,而不是「const char *」。 – juanchopanza

+0

謝謝你指出。剛習慣使用它的數組到指針版本。 –

0

在C++中,字符串文字的類型是constchar[],不是純char[],所以你正在嘗試做的是C++標準,因此,您所看到的錯誤是非法的。

爲了修改字符串,您首先需要使用C庫函數strcpy或(更好)使用std::string來複制該字符串。