C ++:如何修改全局字符串?

时间:2015-01-05 09:19:36

标签: c++ c

在下面的代码片段中,我无法理解LineA上出现错误的原因,但是B行没有错误?

//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 IntelliSense:类型" const char *"无法分配   类型的实体   "焦炭" c:\ users \ hu \ cplustutorial.cpp 69 12 CPLUStutorial

我没有将char字符串作为const,为什么会出现这个错误?

使用MS VS 2010进行编译。

4 个答案:

答案 0 :(得分:2)

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

strA[80]表示该数组中的单个字符。如何在一个char中存储多个字符。使用strcpy复制新字符串。

答案 1 :(得分:0)

您正尝试将strA的第80个元素(偶然不存在)与const char*分配,而不是char[]本身。另外,您将问题标记为C ++,那么为什么要使用char[]代替std::string

答案 2 :(得分:0)

在C ++中,字符串文字的类型是 const char[],而不是普通的char[],所以你要做的就是非法C ++标准,因此你看到的错误。

为了修改字符串,您首先需要复制它,使用C库函数strcpy或(更好)使用std::string

答案 3 :(得分:-1)

您必须了解字符串(字符串文字)的类型为const char *,并且您尝试将其存储在单个字符(char[80])中。这就是为什么它会给你错误。请查看http://www.stackoverflow.com/questions/20294015/