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

时间:2014-12-19 23:25:38

标签: c++ 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;
}

driver.cpp:

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

返回空白

1 个答案:

答案 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();
};