无法将循环的输出写入文件

时间:2015-02-10 20:21:25

标签: c++ ofstream time.h

Hello我编码一个非常基本的密码生成器,我想使用ofstream将循环的输出写入文件。我的想法是每次循环运行从数组abc输出一个声音。我不知道要让它工作和obvs。有更好的方法。

#include <stdio.h>
#include <iostream>
#include <cstdlib>
#include <time.h>
#include <fstream>


using namespace std;

int main(){

    srand(time(0));

    cout << "You'r PW is: \t" << endl;
    char abc [] {'A', 'a', 'B' ,'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h', 'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p', 'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'x', 'Y', 'y', 'Z', 'z'};

    for(int i = 0; i <15; i++){
        int randomNum =  rand() % 53;
        cout << abc[randomNum];
        ofstream fob;
        fob.open("contr.txt");
        fob << abc[randomNum];
    }
}

顺便说一下,我收到的字符有','和' - &gt;'这不在我的阵列中。

3 个答案:

答案 0 :(得分:2)

必须移动

ofstream fob;
fob.open("contr.txt");

离开循环。现在你在每次迭代时重写文件。

答案 1 :(得分:1)

这里的问题非常简单,有两种解决方案。 你的程序所做的是在循环的每次迭代中创建并打开一个新的文件流,但是默认情况下ofstream会覆盖它打开的文件,这样你就可以将流开放移出循环(更好的方法) )或将标志ios::app作为第二个参数添加到流开放器中,以便附加您输出的内容。

答案 2 :(得分:1)

此外,您应该使用int randomNum = rand() % 52;。 选择集合{0,1,2,... 51}中的数字,这将是您阵列的所有可能索引之一,假设您忘记在数组中放入“X”。