По какой-то причине мой кут не работает правильно.Я думаю, что это как-то связано с буфером, который нужно очистить.Я пытался добавить cout << flush
после чтения файлов, но это не помогло.Единственное место, которое я печатаю, это main()
в цикле for.Это вывод, который я получаю из этих отпечатков.
Aeberg
Aaren
Aaron
Full Name
Aaron
До и после Аарона есть пробел.Поэтому печатается только фамилия.
#include <iostream>
#include <fstream>
#include <queue>
#include <time.h>
using namespace std;
const int SIZE = 50000;
void initFirst(string first[]);
void initMiddle(string middle[]);
void initLast(string last[]);
int main()
{
srand(time(NULL));
ifstream in;
ofstream out;
string first[SIZE];
string middle[SIZE];
string last[SIZE];
initFirst(first);
initMiddle(middle);
initLast(last);
string x;
for(int i = 0; i < 1; i++)
{
cout << first[i] << endl;
cout << middle[i] << endl;
cout << last[i] << endl;
cout << "Full Name" << endl;
cout << first[i] << " " << middle[i] << " " << last[i] << endl; // Isn't printing correctly here
}
return 1;
}
void
initFirst(string first[])
{
ifstream file("names.txt");
string line;
int counter = 0;
if(file.is_open())
{
while(getline(file, line))
{
first[counter] = line;
counter++;
}
file.close();
}
int left = SIZE - counter;
int random[left];
for(int i = 0; i < left; i++)
random[i] = rand() % counter;
for(int i = counter; i < SIZE; i++)
first[i] = first[random[i-counter]];
}
void
initMiddle(string middle[])
{
ifstream file("first-names.txt");
string line;
int counter = 0;
if(file.is_open())
{
while(getline(file, line))
{
middle[counter] = line;
counter++;
}
file.close();
}
int left = SIZE - counter;
int random[left];
for(int i = 0; i < left; i++)
random[i] = rand() % counter;
for(int i = counter; i < SIZE; i++)
middle[i] = middle[random[i-counter]];
}
void
initLast(string last[])
{
ifstream file("middle-names.txt");
string line;
int counter = 0;
if(file.is_open())
{
while(getline(file, line))
{
last[counter] = line;
counter++;
}
file.close();
}
int left = SIZE - counter;
int random[left];
for(int i = 0; i < left; i++)
random[i] = rand() % counter;
for(int i = counter; i < SIZE; i++)
last[i] = last[random[i-counter]];
}