Программа изо всех сил пытается открыть файл - PullRequest
0 голосов
/ 11 октября 2019

В настоящее время я использую Clion для школьного проекта, который включает создание ассемблера для MIPS. Я пытался проверить это, но мой ifstream.open () не может найти текстовый файл, который находится в той же папке, что и программа. Я использую тот же самый точный код, чтобы открыть свой файл, как я делал в предыдущих проектах, буквально скопировать, вставить, и по любой причине он не работает. Мне не нужна помощь с другими проблемами в программе, я могу исправить эти ошибки самостоятельно, но этот файловый бизнес, который, как я предполагаю, как-то связан с болью clion, заставляет меня хотеть вырвать свои волосы.

Я попытался объявить свой istream как istream и ifstream, а также ввести имя файла и полный путь к файлу из C: вплоть до файла.

#include <iostream>
#include <cmath>
#include <string>
#include <iomanip>
#include <fstream>
#include <array>


using namespace std;


//void GrowArrays(int &size, int *intArray, string *stringArray);
bool RegisterCheck(string &binary, string hold);


int main() {
    string fileName;
    string binaryOut;
    string outFileName;

    string tempString;
    string holdString;
    int holdInt;
    int binaryHold[16];

    int arraySize = 0;
    string labels[arraySize] = {};
    int labelAddress[arraySize] = {};
    string stringTemp[arraySize];
    int tempInt[arraySize];
    int binaryCounter;
    int instructionCounter = 0;

    ifstream fin;
    ifstream fint;


    cout << "Please input the name of the file you wish to open";
    cin >> fileName;
    cout << "please input the name of the file you wish to write to.";


    fin.clear();
    fint.clear();
    fin.open(fileName);
    fint.open(fileName);
    while(!fin) {
        cout << "File not opened, try again.";
        cin >> fileName;
        fin.open(fileName);
        fint.open(fileName);
    }     
`    `//not making it to rest of program after this

должен открыть файл и продолжить работу в программе, но застревает в цикле из-за невозможности открытия файла

1 Ответ

0 голосов
/ 11 октября 2019

Есть способы понять, почему происходит сбой ifstream :: open. Более подробный ответ см. Как получить сообщение об ошибке, если сбой при открытии потока .

Вот что вы можете сделать:

fin.open(fileName);
if(!fin) {
  std::cerr << "Error: " << strerror(errno) << '\n';
}

Это должно выдать вам сообщение об ошибкев консоли.

...