C++ 以后在代码(C+;+;I/O文件)中是否可以将输出文件用作输入文件
我所做的就是这样C++ 以后在代码(C+;+;I/O文件)中是否可以将输出文件用作输入文件,c++,C++,我所做的就是这样 ifstream infile("warehouse.txt"); ffile("updated.txt"); ofstream outfile("updated.txt"); 基本上,我要做的是从输入文件“warehouse.txt”中读取内容并将内容存储在一个数组中,然后将这个数组和一个额外的数组添加到输出文件“updated.txt”中 然后我想使用‘updated.txt’作为输入文件,如上面的代码所示。这是允许的吗?我基本上想将updated.txt上的所有数据存储
ifstream infile("warehouse.txt"); ffile("updated.txt");
ofstream outfile("updated.txt");
基本上,我要做的是从输入文件“warehouse.txt”中读取内容并将内容存储在一个数组中,然后将这个数组和一个额外的数组添加到输出文件“updated.txt”中
然后我想使用‘updated.txt’作为输入文件,如上面的代码所示。这是允许的吗?我基本上想将updated.txt上的所有数据存储到一个大数组中,即合并两个数组,这是允许的吗?我试过了,我的编译器似乎出了问题,我读过关于使用向量的书,但我很难理解它们。谢谢 这是我的全部代码,我想做的基本上是从输入文件中获取“水果名”及其相应的数量。在一个extraarray中存储额外的条目,然后将这两个数组都放在一个输出文件中,如上所述,然后将该输出用作输入文件,这样我就可以聚集数据 问题是: 当我试图从updated.txt存储到数组中时,我的cout显示我得到了随机数,而不是应该是水果名及其数字
#include <iostream>
#include <string>
#include <cstdlib>
#include <fstream>
using namespace std;
typedef struct items {
string name;
int quantity;
} items_t;
void fileopenchecker (ifstream &FILE);
int readfromfile (ifstream &FILE, items_t fruit[]);
int extrarray (items_t fruit[]);
void writetooutputfile (ofstream &OFILE, items_t fruit[], int size);
void combinearrays (ifstream &final, items_t overallfruit[], int total);
int main()
{
const int MAX_SIZE = 150;
int Nfruit = 0;
int Nextrafruit = 0;
int total;
std::ifstream infile("warehouse.txt");
std::ofstream outfile("updated.txt");
std::ifstream ffile("updated.txt");
items_t extrafruit[MAX_SIZE], fruit[MAX_SIZE], overallfruit[MAX_SIZE];
fileopenchecker(infile);
Nextrafruit = extrarray(extrafruit);
Nfruit = readfromfile(infile, fruit);
total = Nextrafruit + Nfruit;
infile.close();
writetooutputfile(outfile, fruit, Nfruit);
writetooutputfile(outfile, extrafruit, Nextrafruit);
combinearrays (ffile, overallfruit, total);
ffile.close();
return 0;
}
void combinearrays (ifstream &final, items_t overallfruit[], int total){
int i;
for(i=0; i<total; i++){
final >> overallfruit[i].name >> overallfruit[i].quantity;
cout << overallfruit[i].name << overallfruit[i].quantity << endl;
}
}
void fileopenchecker (ifstream &FILE){
if(!FILE.is_open()){
cout << "Your file was NOT detected!" << endl;
exit(1);
}
else{
cout << "Your file was detected" << endl;
}
}
int readfromfile (ifstream &FILE, items_t fruit[]){
int entries = 0;
while(!FILE.eof()){
FILE >> fruit[entries].name >> fruit[entries].quantity;
cout << fruit[entries].name << fruit[entries].quantity << endl;
entries++;
}
return entries;
}
int extrarray (items_t fruit[]){
int runner=1, exentries =0;
while(runner==1){
cout << "Would you like to add entries to your file? (YES-->1 NO-->0)" << endl;
cin >> runner;
if(runner==0){
break;
}
//take the itemname and quantity and stores it in the array.
cout << "Enter the name of the fruit and its quantity" << endl;
cin >> fruit[exentries].name >> fruit[exentries].quantity;
//debugging:
cout << fruit[exentries].name << fruit[exentries].quantity << endl;
exentries++;
}
return exentries;
}
void writetooutputfile (ofstream &OFILE, items_t fruit[], int size){
int entries = 0;
while(entries < size){
cout << fruit[entries].name << fruit[entries].quantity << endl;
OFILE << fruit[entries].name << fruit[entries].quantity << endl;
entries++;
}
}
#包括
#包括
#包括
#包括
使用名称空间std;
typedef结构项{
字符串名;
整数;
}项目;;
作废文件OpenChecker(ifstream和文件);
int readfromfile(ifstream&FILE,items_t fruit[]);
国际额外费用(项目_t水果[]);
void writetooutputfile(流文件和OFILE、项文件[],整数大小);
无效组合付款(如果是流式付款和最终付款,项目总金额为[],整数总额);
int main()
{
const int MAX_SIZE=150;
int Nfruit=0;
int-nextraruit=0;
整数合计;
std::ifstream infle(“warehouse.txt”);
std::ofstream outfile(“updated.txt”);
std::ifstream ffile(“updated.txt”);
项目包括额外水果[MAX_SIZE]、水果[MAX_SIZE]、整体水果[MAX_SIZE];
文件开放检查器(infle);
Nextrafruit=额外的(额外的果实);
Nfruit=readfromfile(infle,fruit);
总计=nextraruit+Nfruit;
infle.close();
WriteOutputFile(输出文件、水果、水果);
WriteOutputFile(输出文件、extrafruit、Nextrafruit);
组合果肉(果肉、总果肉、总果肉);
ffile.close();
返回0;
}
无效组合天数(ifstream和final,项目\u t总体结果[],整数总计){
int i;
对于(i=0;i>总体水果[i]。名称>>总体水果[i]。数量;
cout“我想做的是从输入文件'warehouse.txt'读取”
…“输出文件‘updated.txt’”
…“然后我想使用'updated.txt'作为输入文件”~>创建另一个ifstream的实例
:
{
std::ifstream ifs2("updated.txt");
// reading from ifs2 ...
}
是的,如果使用std::fstream
,则可以只使用两个文件流。例如:
#include <fstream>
#include <iostream>
#include <string>
int main(void)
{
std::ifstream infile("a.txt");
// create file for both reading and writing
std::fstream ffile("b.txt", std::fstream::in | std::fstream::out | std::fstream::trunc);
// read contents of file a and write to file b
std::string line;
while (std::getline(infile, line))
{
std::cout << line << std::endl;
ffile << line << std::endl;
}
// flush the output to disk
ffile.flush();
// go back to the start of the output file before reading from it
ffile.seekg(0);
// read contents of output file again.
while (std::getline(ffile, line))
{
std::cout << line << std::endl;
}
return 0;
}
#包括
#包括
#包括
内部主(空)
{
std::ifstream infle(“a.txt”);
//创建用于读取和写入的文件
std::fstream ffile(“b.txt”,std::fstream::in | std::fstream::out | std::fstream::trunc);
//读取文件a的内容并写入文件b
std::字符串行;
while(std::getline(infle,line))
{
std::无法回答您的问题,是的。是的,您应该能够,但取决于您试图完成的具体内容,似乎将输出保存在内存中比只为稍后阅读而编写更容易。@Paddy:对我来说,这似乎是一个答案。“我试过了,我的编译器似乎出了问题”-那么发生了什么?欢迎来到StackOverflow!请描述您想要实现的目标。尽管您的问题不具体,但我们只能回答:“一切皆有可能”,但我相信这不会有帮助。
{
std::ifstream ifs2("updated.txt");
// reading from ifs2 ...
}
#include <fstream>
#include <iostream>
#include <string>
int main(void)
{
std::ifstream infile("a.txt");
// create file for both reading and writing
std::fstream ffile("b.txt", std::fstream::in | std::fstream::out | std::fstream::trunc);
// read contents of file a and write to file b
std::string line;
while (std::getline(infile, line))
{
std::cout << line << std::endl;
ffile << line << std::endl;
}
// flush the output to disk
ffile.flush();
// go back to the start of the output file before reading from it
ffile.seekg(0);
// read contents of output file again.
while (std::getline(ffile, line))
{
std::cout << line << std::endl;
}
return 0;
}