2013-07-12 45 views
-1
#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; 
    } 
} 

我需要从矢量加载信息到数组中,没有人知道我怎么能够做到这一点?C++随机项目关闭列表

我所做的是可以将数据输入到文本文件中,而不是从列表中拉出(数字)随机项目。

我很感谢您为我完成此任务提供的任何帮助。

+0

为什么你需要做的。此外,['while(!eof())'是错误的。](http://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered-wrong) – chris

+0

它会如果你使用'tmain'(这不是标准的)的int main()'inseatd格式化代码并删除不需要的头文件(如'stdafx.h','Windows.h',...) –

回答

2

尝试这样:

#include <random> 
... 
srand(time(NULL));  // Initializes the random seed 
string randFromVector; 
randFromVector = vlist[ rand() % vlist.size() ]; // Takes the data at this address 

兰特()提供了一个随机数( “伪” 随机,技术上)。然后,我们在vlist的长度上使用模块化以确保它引用合法地址。

编辑:你只需要初始化随机种子一次。每次调用rand()时,它都会返回一个不同的数字。

您还可以通过这样除去modulus bias

int x; 
do { 
    x= rand(); 
} while (x >= vlist.size()); 

randFromVector = vlist[ x]; 
+0

,'rand()'不一定每次都返回一个*不同的数字,但它会得到另一个“随机”数字。因为它是随机的,它可能是相同的,尽管它不太可能 – wlyles

+1

@wlyles此外,rand()在技术上是基于种子IIRC的“预设”序列。所以如果别人得到了和你一样的种子,他们的“随机”数字将与你的相同。 –

+0

@chris我会如何避免在这个例子中使用模数? –