我有一个程序将数据写入文件并从文件中检索回来。当我尝试使用检索到的值填充对象时,我发现这些值被检索为一个没有分离的值。意思是我有两个名为vegetableName和quantity的变量。存储的数据以vegetableName quantity。
的格式存储例如: - 马铃薯10
问题是当从文件中检索数据时,数量会附加到名称,因此我无法填充数量变量,因为数量已附加到vegetableName。
以下是该计划的截图:
正如您在上面的屏幕截图所示,数量附有名称
但是我想要它,如下面的屏幕截图
以下是我将数据写入文件的代码:
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;
...
这里似乎有什么问题?
答案 0 :(得分:3)
看起来你不会在蔬菜名称和数量之间加上空格。
文件流变量只有在它们之间有空格时才会读取值。
(当您将值输出到文件时,您应该在蔬菜名称和数量之间放置一个空格。)