2012-04-23 231 views
0

我非常喜歡C++,並且有最近的作業分配,我需要將1000個最常見的單詞存儲到字符串數組中。我想知道如何去做這件事。這裏是我的示例代碼到目前爲止,如何在C++中將變量存儲在字符串數組中

if(infile.good() && outfile.good()) 
    { 
     //save 1000 common words to a string 

     for (int i=0; i<1000; i++) 
     { 
      totalWordsIn1000MostCommon++; 
      break; 
     } 

     while (infile.good()) 
     { 
      string commonWords[1000]; 
      infile >> commonWords; 
     } 
    } 

謝謝!

+3

我並沒有對此進行投票,但您的示例代碼到目前爲止並沒有顯示出足夠的努力。你有沒有制定出解決問題的一般方法?你如何計劃單詞? – dasblinkenlight 2012-04-23 18:14:09

+0

你如何確定「最常用的詞」?對我來說,聽起來像你想讀所有的單詞,計數重複出現的單詞,按最高計數排序,然後將第一千個從已排序的集合中推送到「std :: vector '... – AJG85 2012-04-23 18:28:55

回答

0
#include <cstdio> 
    #include <string> 

    freopen(inputfileName,"r",stdin); 
    const int words = 1000; 
    string myArr[words]; 
    for(int i=0;i<words;i++){ 
     string line; 
     getline(cin,line); 
     myArr[i] = line;  
    } 
+4

爲什麼在地球上你會劫持'cin'而不是打開文件流嗎? – 2012-04-23 18:31:56

+0

只是一個奇特的做法。 – 2012-04-23 20:55:25

+0

@AbhishekIyer,不,這不是一種「奇特」的做法 - 這是一種完全多餘的方式... – Nim 2013-02-13 11:29:25

0

以上for循環不執行任何操作之初,就打破了在第一次迭代。如果你會閱讀如何在C++中使用循環,會更好。還要看看C++中變量的作用域。在你的情況下,在while循環中聲明的commonWords會在每次循環迭代後被創建並被銷燬。 你需要的是這樣的:

int i = 0; 
std::string commonWords[1000]; 
while (i < 1000 && infile.good()) { 
    infile >> commonWords[i]; 
    ++i; 
} 

我生活其餘部分爲你完成你的功課。

+0

謝謝,我將重新看看C++中的循環。非常感謝您的幫助。 – Matt 2012-04-23 18:49:00