2012-04-23 235 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