为什么从文件输入中读取 std::string 会返回空白



我希望从类返回一个字符串。

我有一个对象,例如:

.....
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;
}

驱动程序.cpp:

meshfile=new inputFile("test.txt")
std::cout << meshFile->getFileContents() << std::endl;

返回空白

您不会在 _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();
};

最新更新