У меня есть следующий код, который просто читает.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
другом месте в других функциях, и я не хочу, чтобы он продолжал набирать его снова и снова. Если это возможно, и я знаю, что это так, я просто хотел бы открыть файл один раз в главном и быть в состоянии использовать в качестве аргументов в любом из моих файлов.
Вы можете передать файл функции. Вы должны передать его по ссылке.
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;
}
ifstream
, но вы все еще передаете имя файла.
void test(ifstream& file, int& height, int& width);
std::pair<int, int> read(std::ifstream& file)