Привет У меня есть эта строка в моем основном методе:
std::copy(std::istream_iterator<Constituency>(inputFile), std::istream_iterator<Constituency>(), std::back_inserter(constits));
Это разбирает файл на вектор. Я перезаписал перегрузку оператора std::istream <<
и ищу способы генерирования определенных c сообщений об ошибках, если синтаксический анализ не удался. Вот перегрузка оператора <<: </p>
std::istream& operator>> (std::istream& input, Constituency& constituency) {
int num_neighbours;
input >> num_neighbours;
std::string name;
std::vector<int> neighbours(num_neighbours);
for(int i = 0; i < num_neighbours; i++) {
try{
input >> neighbours[i];
} catch(...) {
std::cout << "Error: Int Neighbour" << std::endl;
}
}
try{
input >> name;
} catch(...) {
std::cout << "Error: Expected String Name" << std::endl;
}
constituency = Constituency(name, neighbours);
return input;
}
Сообщения об ошибках не распечатываются. Как я могу изменить это так, что если встречается строка там, где ожидается int, она выдает ошибку и наоборот.