Передача файлов .txt по ссылке на другие функции

0

У меня есть следующий код, который просто читает.txt файл для первых двух строк, которые должны указывать высоту и ширину сетки, которую несет файл.txt.

#include <string>
#include <cstdlib>
#include <iostream>
#include <fstream>
using namespace std;

void test(string filename, int& height, int& width);

int main(){
    string filename;
    ifstream infile;
    int height;
    int width;
    cout << "Enter filename: ";
    cin >> filename;
    test(filename, height, width);

    return 0;
}

void test(string filename,int& height, int& width){
    ifstream infile;
    infile.open(filename);
    infile >> height;
    infile >> width;
}

что я хотел бы знать, могу ли я изменить аргументы test() чтобы он воспринимал файл как аргумент, а не имя файла, поскольку мне, возможно, придется использовать .open(filename другом месте в других функциях, и я не хочу, чтобы он продолжал набирать его снова и снова. Если это возможно, и я знаю, что это так, я просто хотел бы открыть файл один раз в главном и быть в состоянии использовать в качестве аргументов в любом из моих файлов.

  • 3
    void test(ifstream& file, int& height, int& width);
  • 0
    std::pair<int, int> read(std::ifstream& file)
Теги:

1 ответ

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

Вы можете передать файл функции. Вы должны передать его по ссылке.

void test(std::ifstream& infile, int& height, int& width) {
    infile >> height;
    infile >> width;
}

int main()
{
    std::string filename;

    std::cout << "Enter filename: ";
    std::cin >> filename;

    std::ifstream infile;
    int height;
    int width;
    infile.open(filename);
    test(infile, height, width);

    return 0;
}
  • 0
    Пожалуйста, объясните свой ответ немного.
  • 0
    Вы объявили функцию для принятия ifstream , но вы все еще передаете имя файла.
Показать ещё 5 комментариев

Ещё вопросы

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