C++ C++;解析文件时引发特定于istream的错误

C++ C++;解析文件时引发特定于istream的错误,c++,exception,istream,C++,Exception,Istream,嗨,我的主要方法中有这一行: std::copy(std::istream_迭代器(inputFile),std::istream_迭代器(),std::back_插入器(constits)) 这会将文件解析为向量。我已经覆盖了std::istream邻居数; std::字符串名; std::向量邻居(num_邻居); for(int i=0;i>邻居[i]; }捕获(…){ std::cout名称; }捕获(…){ std::cout当输入操作失败时,在流上设置一个“failbit” 您可以使

嗨,我的主要方法中有这一行:

std::copy(std::istream_迭代器(inputFile),std::istream_迭代器(),std::back_插入器(constits))

这会将文件解析为向量。我已经覆盖了
std::istream>邻居数;
std::字符串名;
std::向量邻居(num_邻居);
for(int i=0;i>邻居[i];
}捕获(…){
std::cout名称;
}捕获(…){

std::cout当输入操作失败时,在流上设置一个“failbit”

您可以使用“如果”语句检查这一点:

input >> neighbours[i];
if (!input) {
   std::cout << "Error: Int Neighbour" << std::endl;
}
input>>邻居[i];
如果(!输入){
std::cout[i])){

STD::CeSeT故障不是C++异常,不能被代码捕获。尝试catch <代码> > @ [RPGraceDrdUd],我不希望它在我尝试< <代码>输入> >邻居[i] < /C>时用字符串来捕获,当邻居[I]不太明确时,代码>邻居[I];
始终是一个
int
。也许您想将输入读取为字符串,然后首先检查它是整数还是整数not@idclev463035818如果main方法不是int,我想我理解你想要什么了。最后,有一种方法可以启用
cin
throw exceptions,但是它是这样使用的很少见,我没有找到一个好的副本,这可能会有帮助:
input >> neighbours[i];
if (!input) {
   std::cout << "Error: Int Neighbour" << std::endl;
}
if (!(input >> neighbours[i])) {
   std::cout << "Error: Int Neighbour" << std::endl;
}