我希望从类中返回一个字符串。
我有一个像这样的对象:
.....
using namespace std;
class inputFile{
private:
fstream _file;
bool _exists;
std::string _inFileName; // the filename
std::string _fileContents;
protected:
public:
inputFile(std::string*);
std::string getFileContents();
};
构造
inputFile::inputFile(std::string *in)
{
_inFileName=*in;
_file.open(_inFileName.c_str(),ios_base::in);
while(_file.good()){
getline(_file,_fileContents);
cout << _fileContents << endl;
}
if(_file.is_open())
_exists=true;
else
_exists=false;
}
我返回_fileContents的方法总是返回null而不是我正在读的文件内容。为什么会这样?
std::string inputFile::getFileContents(){
return _fileContents;
}
driver.cpp:
meshfile=new inputFile("test.txt")
std::cout << meshFile->getFileContents() << std::endl;
返回空白
答案 0 :(得分:1)
您不能在_fileContents
中保存行。你每次都要覆盖它。您必须使用_fileContents.append
或运算符+ =。
class inputFile{
private:
fstream _file;
bool _exists;
std::string _inFileName; // the filename
std::string _fileContents;
protected:
public:
inputFile(std::string* in) {
_inFileName = *in;
_file.open(_inFileName.c_str(), ios_base::in);
while (_file.good()) {
std::string line;
getline(_file, line);
_fileContents += line;
}
cout << _fileContents << endl;
}
std::string getFileContents();
};