Я пытаюсь прочитать список животных, работает нормально. Затем я хочу разделить каждую строку на две подстроки для name
и cmc
, это тоже отлично работает. Но мой cout
не работает.
Например, мой animal.txt
:
Dog|hi
cat|miau
cow|hihi
Мой результат for
l oop должен выглядеть следующим образом:
Dog
cat
cow
Но на самом деле результат:
cow
cow
cow
Вот мой Animal.cpp
:
#include <string>;
#include <vector>;
#include <fstream>;
#include "Animal.h"
using namespace std;
string cmc;
string name;
void Animal();
void Animal(string nameA) {
name = nameA;
}
void Animal(string nameA, string cmcValue) {
name = nameCard;
cmc = cmcValue;
}
void Animal::setName(string names)
{
name = names;
}
void Animal::setCmc(string cmcvalue) {
cmc = cmcvalue;
}
std::string Animal::getName() {
return name;
}
std::string Animal::getCmc() {
return cmc;
}
void Animal::openfileAnimal() {
ifstream inFileAnimal;
inFileAnimal.open("Animals.txt");
if (inFileAnimal.fail()) {
cerr << "error open this file" << endl;
exit(1);
}
string itemsAnimal;
std::vector<Animal> AllAnimals;
while (getline(inFileAnimal, itemsAnimal)) {
Animal c;
string t1 = itemAnimal;
size_t pos = t1.find("|");
//name (setname(sub))
string sub = t1.substr(0, pos);
c.setName(sub);
string t2 = t1.substr(sub1.length() + 1, t1.length());
string sub2 = t2.substr(0, t2.length());
c.setCmc(sub2);
AllAnimals.push_back(c);
}
for (int i = 0; i < 2; i++) {
std::cout <<AllAnimals.at(i).getName() << endl;
}
}
Я читал другие вопросы StackOverflow, подобные моему, но для В моем примере все решения не работают. Так в чем же моя проблема? Думаю, это что-то вроде того, что я изменяю одну и ту же память снова и снова.