C++ 成员变量不保存从函数中的成员向其添加的值
您好,我有一个小问题,我试图从一个成员函数中为类的某个成员变量赋值。一切似乎都很好,但一旦我的程序返回到EAN::read(…);成员变量中现在有一些奇怪的字符-->“╠╠╠╠╠╠". 任何人都可以向我解释我做错了什么?谢谢C++ 成员变量不保存从函数中的成员向其添加的值,c++,class,constructor,C++,Class,Constructor,您好,我有一个小问题,我试图从一个成员函数中为类的某个成员变量赋值。一切似乎都很好,但一旦我的程序返回到EAN::read(…);成员变量中现在有一些奇怪的字符-->“╠╠╠╠╠╠". 任何人都可以向我解释我做错了什么?谢谢 ///My class //// class EAN { char string[13]; char strStyle[18]; char styles[2]; char area[6]; char publisher[8]; char title[8]; bool
///My class ////
class EAN
{
char string[13];
char strStyle[18];
char styles[2];
char area[6];
char publisher[8];
char title[8];
bool registered;
public:
///and member functions here//
};
////First member function that is called///
bool EAN::read(std::istream& is, const Prefix& list){
char str[13];
bool keepgoing = false;
do{
cout << "Enter a EAN(0 to quit): ";
is >> str;
if (str == nullptr || strlen(str) < 13){
keepgoing = false;
registered = false;
}
else{
keepgoing = true;
EAN(str, list); ///this is where member variable will be assigned//
registered = true;
std::cout << "this is area" << area << endl;
}
} while (keepgoing == false);
return keepgoing;
}
////////Here is the constructor that assigns the values to member variable//
EAN::EAN(const char* str, const Prefix& list){
int keepgoing = 0, j = 3, i = 0;
string[13] = '\0';
strStyle[18] = '\0';
area[6] = '\0';
publisher[8] = '\0';
title[8] = '\0';
if (isValid(str) == 1 && str[0] == '9' && str[1] == '7'|| str[2] == '8' || str[2] == '9') {
keepgoing = 1;
strcpy(string, str);
if (isRegistered(list) == true){
char _area[6];
int lengthArea = 0;
while (i < 5) {
_area[i] = str[j];
_area[i + 1] = '\0';
if (list.isRegistered(atoi(_area))) {
strcpy(area, _area); **<--- ///assign value to member variable.///**
lengthArea = strlen(area);
i = 6; // exit loop
keepgoing = 1;
}
else
{
i++;
j++;
}
}
.......more coding pretty same as above.
}
///我的类////
EAN类
{
字符串[13];
字符样式[18];
字符样式[2];
煤焦面积[6];
字符发布器[8];
字符标题[8];
bool注册;
公众:
///还有这里的成员函数//
};
////调用的第一个成员函数///
boolean::read(std::istream&is、const前缀&list){
char-str[13];
bool keepgoing=false;
做{
cout>str;
if(str==nullptr | | strlen(str)<13){
keepgoing=false;
注册=假;
}
否则{
持续=正确;
EAN(str,list);///这是分配成员变量的地方//
注册=真实;
std::cout所有这些值,您都在注销分配内存的末尾:
string[13] = '\0';
strStyle[18] = '\0';
area[6] = '\0';
publisher[8] = '\0';
title[8] = '\0';
如果要将最后一个字符设置为null,请按如下操作:
char string[13];
string[12] = '\0';
因为零索引;嘿,伙计们,谢谢你们的帮助,如果你们仔细看的话,我会找出答案的,伙计们,我在成员函数中调用了构造函数,但我需要返回我让构造函数指定的内容
所以我丢失了*this=EAN(str,list);
谢谢大家的帮助。“成员变量不会保存从函数中从成员添加到它的值”-一句话:胡说八道。问题几乎总是简单的。举个简单的例子。使用C样式字符串(字符数组)的任何原因与STD::String相反?如果您想在C++中使用字符串,则应该使用它。它仍然给我相同的输出。我试图修改EA::;并且它保留了值。但只有在这个成员函数中修改了它。我建议创建一个小得多的问题示例,假设您可以注释掉很多逻辑,仍然会得到相同的错误。