Чтение файла вызывает исключение

0

Кто-нибудь знает, что я делаю неправильно

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, если это помогает.

  • 1
    Вы, кажется, включили весь код, кроме кода, который, как вы говорите, вызывает ошибку.
  • 0
    Итак, вы говорите, что то, как я читаю ( getline ) это то, что выдает исключение
Показать ещё 9 комментариев
Теги:
file
exception
ifstream

2 ответа

1
Лучший ответ

Я напечатал argv[0] и увидел, что IDE фактически запускает программу в другом каталоге. Извините за мою небрежность

1

Существует ли имя inputFileName? Просто пиши:

  catch ( std::exception const& e ) {
     std::cerr << "Exception: " << e.what() << std::endl;
   }
  • 0
    Exception: basic_ios::clear напечатано. Да, существует
  • 0
    Просто проверьте, является ли readFile допустимым потоком, проверив 'if (readFile) {// valid} else {invalid}'
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню