在下面的代码片段中,我无法理解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进行编译。
答案 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/。