检索数据并将其写入文件c ++

时间:2014-08-24 07:45:54

标签: c++ file-io

我有一个程序将数据写入文件并从文件中检索回来。当我尝试使用检索到的值填充对象时,我发现这些值被检索为一个没有分离的值。意思是我有两个名为vegetableName和quantity的变量。存储的数据以vegetableName quantity。

的格式存储

例如: - 马铃薯10

问题是当从文件中检索数据时,数量会附加到名称,因此我无法填充数量变量,因为数量已附加到vegetableName。

以下是该计划的截图:

enter image description here

正如您在上面的屏幕截图所示,数量附有名称

但是我想要它,如下面的屏幕截图

enter image description here

以下是我将数据写入文件的代码:

string fileHandler::writeToFile(Vegetables writeObject)
   {
       ofstream outputFile;
       outputFile.open("my.txt",ios::out|ios::app);

  string dataToWrite=writeObject.toString();
outputFile.write(dataToWrite.c_str(),dataToWrite.size());
    outputFile.close();

return "done";
   }

这是我的文件访问代码:

void fileHandler::readFromInventory()
  {
    Vegetables veg; 
    bool stat=true;
    vegetableName;
    int quantity;
          fstream readFile("my.txt",ios::in);
          if(!readFile)
          {
              cerr<<"File Unable to Open"<<endl;
              exit(1);
          }

         while(true)
         {

         if(readFile.eof())
             {
                 break;
             }


             readFile>>vegetableName>>quantity;
              cout<<"Retrieved Vegetable Name:"<<vegetableName<<endl;

             cout<<"Retrieved Quantity       :"<<quantity<<endl;
    ...

这里似乎有什么问题?

1 个答案:

答案 0 :(得分:3)

看起来你不会在蔬菜名称和数量之间加上空格。

文件流变量只有在它们之间有空格时才会读取值。

(当您将值输出到文件时,您应该在蔬菜名称和数量之间放置一个空格。)