在没有帮助的情况下尝试解决这个问题有一段时间了,但我很挣扎,有人可以解释为什么我的代码拒绝运行它被要求运行的行吗?谢谢
#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
void fileOP(std::ifstream& testdata, std::string& line, std::string& csvitem, int linenumsought, int linenum, std::string& address);
int main() {
std::ifstream testdata;
testdata.open("testdata.txt");
std::string line, csvitem;
int linenum = 0;
int linenumsought;
std::string address; // Variable for later use
std::cout << "Please enter address: ";
std::cin >> linenumsought; // Using an int for now so I can just enter the line number
fileOP(testdata, line, csvitem, linenumsought, linenum, address);
return 0;
}
void fileOP(std::ifstream& testdata, std::string& line, std::string& csvitem, int linenumsought, int linenum, std::string& address) {
if (testdata.is_open()) {
while (std::getline(testdata, line)) {
linenum++;
std::cout << "Reading line " << linenum << ": " << line << std::endl; // Debugging output
if (linenum == linenumsought) {
std::cout << "Line number matched: " << line << std::endl; // Debugging output
std::istringstream myline(line);
while (std::getline(myline, csvitem, ',')) {
std::cout << csvitem << std::endl;
}
}
}
testdata.close(); // Close the file after reading
} else {
std::cerr << "Unable to open file!" << std::endl;
}
}
我不断收到来自
std::cerr << "Unable to open file!" << std::endl;
的错误响应,但似乎无法修复它,如果您想要更多信息,请随时询问。谢谢!
此代码的问题在于,在调用 fileOP() 函数之前,在 main() 函数中打开文件 testdata.txt。但是,文件 testdata.txt 没有作为参数传递给 fileOP() 函数。这意味着 fileOP() 函数无法处理打开的文件。
要解决此问题,您应该将 testdata 文件流作为参数传递给 fileOP() 函数。修改main()函数,将testdata文件流传递给fileOP(),解决方案如下:
int main() {
std::ifstream testdata;
testdata.open("testdata.txt");
std::string line, csvitem;
int linenum = 0;
int linenumsought;
std::string address; // Variable for later use
std::cout << "Please enter address: ";
std::cin >> linenumsought; // Using an int for now so I can just enter the line number
fileOP(testdata, line, csvitem, linenumsought, linenum, address);
testdata.close(); // Close the file after using it
return 0;
}