Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 以后在代码(C+;+;I/O文件)中是否可以将输出文件用作输入文件_C++ - Fatal编程技术网

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;
}