c++ 构造函数 将 1 个字符串参数转换为 3 个属性
c++ Constructor With 1 string parameter into 3 attributes
一些背景故事... 对于我的数据结构和算法中的家庭作业,(早期(我必须创建一个类定义和实现,该类定义和实现对商店项目进行建模,格式为部件号、部门代码和价格。除了一个我似乎无法弄清楚如何开始的构造函数重载之外,我已经完成了大部分工作。
到目前为止我所拥有的样本。
/** Default Construct*/
Item() : Part_Num("------"), Dep_Code("---"), item_Price(0){}
/** First 3Param Constructor*/
Item(std::string partNum, std::string dept, std::string priceStr):
Part_Num(partNum),Dep_Code(dept), item_Price(stod(priceStr)){}
/** Second 3Param Constructor*/
Item(std::string partNum, std::string dept, double priceD) :
Part_Num(partNum), Dep_Code(dept), item_Price(priceD) {}
我遇到的问题是,我需要创建一个参数构造函数,该构造函数采用字符串,格式为
BN3782 ELE 87.25
并将其拆分为正确的数据成员。我有一个解析的想法,但我不知道如何定义要开始的构造函数。只要朝着正确的方向推动,将不胜感激。这是我的第一篇文章,我不擅长解释,所以如果有人需要任何其他信息,请告诉我。
我试过了
Item(std::string data) : Part_Num(data), Dep_Code(data), item_Price(data){}
但这还没有与我的代码一起使用,我不确定为什么它会......(在另一个论坛上建议(。
编辑:我让它与pm100建议一起工作,这是我为将来遇到相同问题的任何人工作的代码示例。
Item(std::string line) {
item_Data = line;
line = removeSpaces(item_Data);
Part_Num = line.substr(0, 6);
Dep_Code = line.substr(6, 3);
item_Price = stod(line.substr(9));
}
您需要对字段分配进行编码
Item(std::string &valstr)
{
Part_Num = <parsed bit of string>;
Dep_Code = <a different part of the string>;
}
为了完整起见,如果您愿意,您仍然可以使用启动器列表。您只需要在某处进行解析。假设您有一个:
std::string nth_part(int n,std::string s) { ... }
那么你的构造函数可能是
Item(std::string s) :
Part_Num(nth_part(0,s)), Dep_Code(nth_part(1,s)), item_Price(nth_part(2,s)) {}
但是,这将需要您处理字符串 3 次(如果您在构造函数主体中执行此操作,则不需要(。使用初始值设定项列表是一种很好的做法,但并不总是真正得到回报。
Item(std::string data)
{
int i=0;
int counter=0;
std::string temp="";
int len=data.length();
while(i<len)
{
if(data[i]!=' ' && i<len-1)
{
temp+=data[i];
}
else
{
if(counter==0) Part_Num=temp;
else if(counter==1) Dep_Code=temp;
else
{
temp+=data[i];
item_price=stod(temp);
}
++counter;
temp="";
}
++i;
}
}
这将为您提供问题所需的结果,您可以通过运行来检查它。
相关文章:
- c++ 构造函数 将 1 个字符串参数转换为 3 个属性
- cocos2dx 将值强制转换为属性字符串
- MFC如何将带有透明属性的PNG转换为HBITMAP
- 即使基类属性在完成向下转换时是虚拟的,是否有效
- 如果第二个属性未支撑,则将与支撑初始化器配对缩小转换
- 将单个属性类转换为属性类型
- 转换矩阵集属性
- 向向下转换结构添加属性值会导致分段错误
- 如何在C++中将结构属性转换为指针引用
- Qt DBus 属性转换为映射
- QML 引擎不隐式将布尔字符串 QVarient 转换为布尔属性
- 转换为 Unicode 时提升属性树问题
- 解析SVG转换属性的转换列表
- Boost Library函数将JSON格式的属性树转换为点分隔的字符串
- 如何使用tinyxml将xml属性转换为c++类
- 如何设置对象转换,属性
- Boost c++和属性映射-将数组转换为向量
- 将boost图中的内部属性转换为boost图的外部属性容器
- 如何将 boost::spirit::qi::lexeme 的属性转换为 std::string?
- 将属性转换为boost::变体