2013-07-12 50 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我會如何避免在這個例子中使用模數? –