Кто-нибудь знает, что я делаю неправильно
inputFileName = argv[1];
outputFileName = argv[2];
std::ifstream readFile;
readFile.exceptions (std::ifstream::failbit | std::ifstream::badbit);
//set the flags for stream bits that indicate failure if ON
std::ofstream writeFile;
writeFile.exceptions (std::ifstream::failbit | std::ifstream::badbit);
try{
readFile.open(inputFileName);
writeFile.open(outputFileName);
//do some stuff
readFile.close();
writeFile.close();
}
catch(std::ifstream::failure &readErr) {
std::cerr << "\n\nException occured when reading a file\n"
<< readErr.what()
<< std::endl;
return -1;
}
catch(std::ofstream::failure &writeErr) {
std::cerr << "\n\nException occured when writing to a file\n"
<< writeErr.what()
<< std::endl;
return -1;
}
При компиляции я получаю
warning: exception of type 'std::ios_base::failure' will be caught [enabled by default]
catch(std::ofstream::failure &writeErr) {
^
warning: by earlier handler for 'std::ios_base::failure' [enabled by default]
catch(std::ifstream::failure &readErr) {
^
И когда я запускаю код, Exception occured when reading a file
произошло Exception occured when reading a file
и readErr.what() basic_ios::clear
print.
Я искал много примеров, и я не вижу, где я ошибся. Кроме того, я на Ubuntu 14.04, если это помогает.
Я напечатал argv[0]
и увидел, что IDE фактически запускает программу в другом каталоге. Извините за мою небрежность
Существует ли имя inputFileName? Просто пиши:
catch ( std::exception const& e ) {
std::cerr << "Exception: " << e.what() << std::endl;
}
Exception: basic_ios::clear
напечатано. Да, существует
getline
) это то, что выдает исключение