表达式必须是可修改的左值C ++?

时间:2018-04-22 17:57:06

标签: c++ arrays string

在C中,我可以将字符串存储为数组,因此我尝试在C ++中执行以下操作:

message = "I am sending this back";

其中消息的定义方式如下:

#define mx 100
#define sizeArr (mx+1)

并在int main中:

char message[sizeArr];

但是我收到以下错误:“表达式必须是可修改的左值。”

出了什么问题?

2 个答案:

答案 0 :(得分:3)

以下代码不是您想要的,不依赖于C或C ++语言。

char message[100];
message = "abc";

你必须做这样的事情:

char message[100];
strcpy( message, "abc" );

P.S。在C ++中有一个更好的解决方案,只需使用std :: string:

string message;
message = "abc";

答案 1 :(得分:1)

如果你必须使用字符数组,这里有一个常见的习语:

static const char my_text[] = "This is my text.";

长度的常见习语,因为它的编译时间常数是:

const size_t length_my_text = sizeof(my_text); // Includes terminating nul character.

对于没有终止空字符的文本长度:

const size_t length_no_nul = sizeof(my_text) - 1U;

要复制字符数组,请参阅: strcpystrcatstrdup strncpystrncat。另请参阅strlenstrcmp

文本的首选C ++习语是使用std::string