为什么两个不同的文字字符串不能被=运算符替换? 我想也许是因为他们是一个文字阵列,两个不同的阵列不能被替换 想知道是否还有其他原因,如果我说的话是无稽之谈 例如:
char s1[] = "ABCDEFG";
char s2[] = "XYZ";
s1=s2; ERROR
我知道如何更换它们但不知道为什么不能以这种方式更换
答案 0 :(得分:2)
数组没有赋值运算符,也不能用作其他数组的初始值设定项,因为它们在表达式中使用时会转换为指向其第一个元素的指针。
如果您想要"分配"使用标题strcpy
中声明的标准C函数<cstring>
一个字符数组到其他包含字符串的字符。例如
#include <cstring>
//...
char s1[] = "ABCDEFG";
char s2[] = "XYZ";
//...
std::strcpy( s1, s2 );
考虑到一般情况下s1必须足够大以容纳s2的所有字符,包括treminating zero。
答案 1 :(得分:1)
如果您正在使用C ++,并且显然您对指针不是很熟悉....使用std :: string可能更容易:
#include <string>
std::string s1 = "ABCDEFG";
std::string s2 = "XYZ";
s1=s2; // No ERROR!