C++ 将字符串指定给结构';s属性

C++ 将字符串指定给结构';s属性,c++,C++,我正在尝试初始化main()中的数组。但出现错误。 下面是代码的外观: #include<iostream> #include<string.h> using namespace std; class word { public: char str[20]; }; int main() { word a; word b; a.str[]="12345"; b.str[]="67"; }

我正在尝试初始化main()中的数组。但出现错误。 下面是代码的外观:

#include<iostream>
#include<string.h>
using namespace std;

class word
{
public:
    char str[20];
};

int main()
{
    word a;
    word b;
    a.str[]="12345";
    b.str[]="67";
}
#包括
#包括
使用名称空间std;
类词
{
公众:
char-str[20];
};
int main()
{
a字;
b字;
a、 str[]=“12345”;
b、 str[]=“67”;
}

“a”和“b”是单词类的两个对象。

如果使用的是C字符串,则需要将其复制到:

intmain()
{
a字;
b字;
strncpy(a.str,“12345”,sizeof(a.str));
strncpy(b.str,“67”,b.str的大小);
}

如果您想更有效地使用C++,请考虑使用<代码> STD::String >:

#包括
#包括
类词
{
公众:
std::string str;//接受std::前缀,它的存在是有原因的
};
int main()
{
a字;
b字;
a、 str=“12345”;
b、 str=“67”;
}
这里的作业非常简单

注意:原来的代码有语法错误,因为<代码> .STR[]=…< /Code >不是有效的C++。

[]
部分表示“未知/任意长度的数组”,可用于函数签名,但不能用于赋值。您可以执行
a.str[n]='x'
,但这只指定一个字符


如果使用的是C字符串,则需要将其复制到:

intmain()
{
a字;
b字;
strncpy(a.str,“12345”,sizeof(a.str));
strncpy(b.str,“67”,b.str的大小);
}

如果您想更有效地使用C++,请考虑使用<代码> STD::String >:

#包括
#包括
类词
{
公众:
std::string str;//接受std::前缀,它的存在是有原因的
};
int main()
{
a字;
b字;
a、 str=“12345”;
b、 str=“67”;
}
这里的作业非常简单

注意:原来的代码有语法错误,因为<代码> .STR[]=…< /Code >不是有效的C++。

[]
部分表示“未知/任意长度的数组”,可用于函数签名,但不能用于赋值。您可以执行
a.str[n]='x'
,但这只指定一个字符

我建议你。
意思是:保持数据成员的隐私;公开公共方法以访问私有数据成员(获取和设置)。
在可能的情况下,使用不可变的数据(在构造时写入,永不更改)。
您可以在中联机使用代码

#包括
#包括
使用名称空间std;
类词
{
常量字符串str;
公众:
单词(常量字符串&w):str(w){}
单词(const char*w):str(w){
常量字符串&get()常量{return str;}
};
int main()
{
a字(“12345”);
b字(“67”);
我不能建议你。
含义:保持数据成员私有;公开访问私有数据成员(获取和设置)的公共方法。
在可能的情况下,使用不可变的数据(在构造时写入,永不更改)。
您可以在中联机使用代码

#包括
#包括
使用名称空间std;
类词
{
常量字符串str;
公众:
单词(常量字符串&w):str(w){}
单词(const char*w):str(w){
常量字符串&get()常量{return str;}
};
int main()
{
a字(“12345”);
b字(“67”);

不能说“出错”。相反,请在您的问题中包含准确的错误文本,以便我们准确了解问题所在。不同的编译器有不同的抱怨。您不需要
char str[]
这里。您需要的是
string str
。如果您坚持使用
char str[]
,您需要使用
memcpy
strcpy
将字符复制到其中。不要说“出错”。相反,请在您的问题中包含准确的错误文本,以便我们准确了解问题所在。不同的编译器有不同的投诉。您不需要
char str[]
这里。你需要的是
string str
。如果你坚持使用
char str[]
,你需要使用
memcpy
strcpy
将char复制到其中。为什么你会建议对这样一个简单的结构进行封装?为什么你会建议对这样一个简单的结构进行封装?
#include<iostream>
#include<string.h>
using namespace std;

class word
{
    const string str;
public:
    word(const string &w) : str(w) {}
    word(const char *w)   : str(w) {}

    const string & get() const { return str; }
};

int main()
{
    word a("12345");
    word b("67");

    cout << "Word a = " << a.get() << endl;
    cout << "Word b = " << b.get() << endl;
}