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) {
}
注意初始化列表语法:它允许避免像您的那样的错误


顺便说一下,在您的代码中,
名片
根本没有定义。

为什么在循环中有两次搜索
|
?每行只包含一个
|
字符。可能需要实现if
Animal
。。这些方法不是构造函数,这些对象不是类的成员。。。。
Animal::Animal(string nameA, string cmcValue)
  : name(nameA), cmc(cmcValue) {
}