C++ 从Vector操作文件数据,然后输出新的 要求:
我有一个文件,C++ 从Vector操作文件数据,然后输出新的 要求:,c++,file,vector,file-io,C++,File,Vector,File Io,我有一个文件,file.txt。我必须从这个文件中读取数据,进行一些计算,然后将数据输出到new.txt file.txt的内容(不包含带括号的第一行,这只是为了理解表格的排列): new.txt的内容必须包含ID、当前库存(等于以前的库存-售出的库存)以及使库存达到所需数量所需的金额。多亏了以前的论坛帖子和StackOverflow,我知道如何读取数字,但我不知道如何包含项目(#),因为我对如何混合和匹配整数和字符/字符串一无所知 方法: 创建一个2D矢量,打开输入文件并将其读入filestr
file.txt
。我必须从这个文件中读取数据,进行一些计算,然后将数据输出到new.txt
file.txt的内容(不包含带括号的第一行,这只是为了理解表格的排列):
new.txt
的内容必须包含ID、当前库存(等于以前的库存-售出的库存)以及使库存达到所需数量所需的金额。多亏了以前的论坛帖子和StackOverflow,我知道如何读取数字,但我不知道如何包含项目(#),因为我对如何混合和匹配整数和字符/字符串一无所知
方法:
创建一个2D矢量,打开输入文件并将其读入filestreamfileIn
,将每一行读入一个字符串,将每一行的数据读入一个新矢量lineData
,然后将其合并并写入new.txt
的文件流中
代码:
#包括
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
//2D矢量;在此处读取所有输入文件的数据
矢量数据读取器;
//要从中读取数据的文件
ifstreamfilein;
fileIn.open(“file.txt”);
弦线;
//将每行读入字符串变量
while(getline(fileIn,line))
{
矢量线数据;
线状流线状流(线状);
int值;
//从行中一次读取一个整数
while(lineStream>>值)
{
//行中的数字->向量
lineData.push_back(值);
}
//将lineData合并到dataToRead中
dataToRead.推回(lineData);
}
//将数据复制到new.txt中
流文件输出;
open(“new.txt”,ios::out | ios::binary);
ostream_迭代器输出_迭代器(fileOut,“\t”);
对于(int i=0;ilineStream>>object.id>>object.pevious>>object.sall>>object.required
)。
(ID) (previous stock) (stock sold) (required stock)
item1 96 48 51
item2 321 163 201
item3 35 21 26
item4 164 151 161
#include <vector>
#include <string>
#include <fstream>
#include <sstream>
#include <iostream>
#include <iterator>
using namespace std;
int main()
{
// 2D vector; read all input file's data into here
vector <vector <int>> dataToRead;
// file to read data in from
ifstream fileIn;
fileIn.open("file.txt");
string line;
// read each line into string variable
while (getline(fileIn, line))
{
vector <int> lineData;
stringstream lineStream(line);
int value;
// Read an integer at a time from the line
while(lineStream >> value)
{
// numbers in line -> vector
lineData.push_back(value);
}
// combine lineData into dataToRead
dataToRead.push_back(lineData);
}
// copy out dataToRead into new.txt
ofstream fileOut;
fileOut.open("new.txt", ios::out | ios::binary);
ostream_iterator <int> output_iterator(fileOut, "\t");
for (int i = 0; i < dataToRead.size(); i++)
{
copy(dataToRead.at(i).begin(), dataToRead.at(i).end(),
output_iterator);
fileOut << endl; // newline after each row
}
// close files
fileIn.close();
fileOut.close();
}