#include "stdafx.h"
#include <iostream>
#include <vector>
#include <string>
#include <Windows.h>
#include <ios>
#include <fstream>
#include <cstdlib>
#include <iostream>
#include <ctime>
#include <array>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int opt;
ifstream ilist ("lsit.txt");
char conti;
string item;
cout << "Options!\n1. Add\2. Generate\n Type the number of the option you want!";
cin >> opt;
ofstream list;
vector<string> vlist;
int coutn = 0;
if (opt == 1)
{
list.open("lsit.txt", ios::app);
cin >> item;
list <<item <<endl;
cout<< "Add more? (T/F)";
cin >> conti;
while(conti != 'F')
{
cin >> item ;
list <<item <<endl;
cout<< "Add more? (T/F)";
cin >> conti;
}
list.close();
}
if (opt == 2)
{
while( ! ilist.eof() ){
getline (ilist, item);
vlist.push_back(item);
coutn++;
}
string *arr;
arr = new string[coutn];
return 0;
}
}
我需要将矢量中的信息加载到数组中,有人知道我怎么能这样做吗?
我正在制作的是可以将数据输入到文本文件中的内容,而不是从列表中提取(编号)随机项目。
感谢您为我完成此任务提供的任何帮助。
答案 0 :(得分:2)
尝试这样的事情:
#include <random>
...
srand( time(NULL) ); // Initializes the random seed
string randFromVector;
randFromVector = vlist[ rand() % vlist.size() ]; // Takes the data at this address
rand()提供一个随机数(“psuedo”随机,技术上)。然后,我们在vlist的长度上使用模块化,以确保它引用合法地址。
编辑:您只需要初始化一次随机种子。每次调用rand()时,它都会返回一个不同的数字。
你也可以通过这样做删除modulus bias:
int x;
do {
x= rand();
} while ( x >= vlist.size() );
randFromVector = vlist[ x];