C++ 将_向后推,通过自建对象获取最后一个元素的向量
我试着在动物列表中阅读,这很好。然后,我想将每个字符串拆分为两个子字符串,分别对应于C++ 将_向后推,通过自建对象获取最后一个元素的向量,c++,vector,push-back,C++,Vector,Push Back,我试着在动物列表中阅读,这很好。然后,我想将每个字符串拆分为两个子字符串,分别对应于名称和cmc,这也很好。但是我的不能工作 例如,我的animal.txt是: Dog|hi cat|miau cow|hihi 但实际产出是: cow cow cow 我读了其他类似我的问题,但对于我的例子来说,所有的解决方案都不起作用。那么我的问题在哪里?我猜这就像我在一遍又一遍地修改同一个内存。您有全局变量,而不是类数据成员: string cmc; string name; void Animal();
名称
和cmc
,这也很好。但是我的不能工作
例如,我的animal.txt
是:
Dog|hi
cat|miau
cow|hihi
但实际产出是:
cow
cow
cow
我读了其他类似我的问题,但对于我的例子来说,所有的解决方案都不起作用。那么我的问题在哪里?我猜这就像我在一遍又一遍地修改同一个内存。您有全局变量,而不是类数据成员:
string cmc;
string name;
void Animal();
void Animal(string nameA) {
name = nameA;
}
void Animal(string nameA, string cmcValue) {
name = nameCard;
cmc = cmcValue;
}
因此,只保留最新指定的值。此外,您可能将其视为构造函数的东西根本不是构造函数。构造函数应该如下所示:
Animal::Animal(string nameA, string cmcValue)
: name(nameA), cmc(cmcValue) {
}
注意初始化列表语法:它允许避免像您的那样的错误
顺便说一下,在您的代码中,名片
根本没有定义。为什么在循环中有两次搜索|
?每行只包含一个|
字符。可能需要实现ifAnimal
。。这些方法不是构造函数,这些对象不是类的成员。。。。
Animal::Animal(string nameA, string cmcValue)
: name(nameA), cmc(cmcValue) {
}