C++ C++;字符串分配错误。如何为结构指针的字符串成员赋值?

C++ C++;字符串分配错误。如何为结构指针的字符串成员赋值?,c++,string,pointers,C++,String,Pointers,为什么下面代码的输出是无效字符串?如果无法更改第1行到第3行,如何将config.strConfig的值分配给data2->str //classA.h #布拉格语一次 #包括 类配置{ 公众: INTA; std::字符串strConfig; }; //结构 #布拉格语一次 #包括 结构数据{ 煤焦试验[2]; std::字符串str; }; //main.cpp #包括“classA.h” #包括“structA.h” #包括 int main(){ 数据数据;/#1 memset(&dat

为什么下面代码的输出是无效字符串?如果无法更改第1行到第3行,如何将
config.strConfig
的值分配给
data2->str

//classA.h
#布拉格语一次
#包括
类配置{
公众:
INTA;
std::字符串strConfig;
};
//结构
#布拉格语一次
#包括
结构数据{
煤焦试验[2];
std::字符串str;
};
//main.cpp
#包括“classA.h”
#包括“structA.h”
#包括
int main(){
数据数据;/#1
memset(&data,0,sizeof(data));/#2
数据*data2=&Data;/#3
配置配置;
config.strConfig=“aaaa”;
data2->str=config.strConfig;

std::cout str)您不需要(也不应该使用)memset(line/#2)。这会清除内存字节,而不考虑您正在使用的容器类型。最好为数据编写一个构造函数,将test[0]和test[1]设置为零(如果您需要的话)和(可选)初始化str.

不要在非POD的结构上使用
memset
。@Devolus感谢您的评论。但是,第1行到第3行是其他学院编写的代码,我只能根据他们给出的代码扩展程序。我现在不知道如何实现
data2->str=config.strConfig;
并获得有效结果。如果您的同事们给了你错误代码,那么他们应该修复它。@Devlus好的,谢谢你的链接。你不能修复它,因为如果这是他们的实现,你不能更改它,那么在他们修复它之前你什么也做不了。