C++ IntelliSense:表达式必须是可修改的左值+;功能
这是一个很容易的问题,但我无法解决。 给你C++ IntelliSense:表达式必须是可修改的左值+;功能,c++,C++,这是一个很容易的问题,但我无法解决。 给你 struct Person{ char name[20]; char family[20]; char tel[20]; }; Person p[40]; string newName 及 我想编写一个函数,在其中我可以用newName替换p[numPerson].name,但出现了一个错误!:IntelliSense:表达式必须是可修改的左值 希望有人能帮忙 char name[20]; string newName
struct Person{
char name[20];
char family[20];
char tel[20];
};
Person p[40];
string newName
及
我想编写一个函数,在其中我可以用newName替换p[numPerson].name,但出现了一个错误!:IntelliSense:表达式必须是可修改的左值
希望有人能帮忙
char name[20];
string newName
它们都是不同的物种。正如你所知道的,不同的物种之间不容易混淆
更好的方法是始终使用std::string。您可以通过以下方法解决此问题
1. 2.
注意:如果要更改族,请将其数据类型设置为字符串
struct Person{
string name;
char family[20];
char tel[20];
}Person p[40];
string newName;
p[numPerson].name = newName;
字符名[20]
不是std::string
。为什么不使用字符串名称
在struct Person
中声明它?这种固定长度的char
字段总是以零结尾是很不寻常的。如果它们不是以零结尾,strcpy
将尝试读取newName
的结尾以外的内容,并尝试写入name
的结尾以外的内容。在这种情况下,memcopy可以使用strncpy
。
struct Person{
char name[20];
char family[20];
char tel[20];
}Person p[40];
char newName[20];
strcpy(p[numPerson].name,newName);
struct Person{
string name;
char family[20];
char tel[20];
}Person p[40];
string newName;
p[numPerson].name = newName;