为什么两个不同的文字字符串不能用=运算符替换?

时间:2014-09-13 18:25:52

标签: c++ arrays string character

为什么两个不同的文字字符串不能被=运算符替换? 我想也许是因为他们是一个文字阵列,两个不同的阵列不能被替换 想知道是否还有其他原因,如果我说的话是无稽之谈 例如:

char s1[] = "ABCDEFG";
char s2[] = "XYZ";
s1=s2; ERROR

我知道如何更换它们但不知道为什么不能以这种方式更换

2 个答案:

答案 0 :(得分:2)

数组没有赋值运算符,也不能用作其他数组的初始值设定项,因为它们在表达式中使用时会转换为指向其第一个元素的指针。

如果您想要&#34;分配&#34;使用标题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!