2014-11-08 76 views
0

我正在使用C++中的程序来读取文件中的整数,然后将它们传递给检查子集总和的函数。将整数列表读入数组C++

文件的格式像这样:

number of cases n 

sum for case 1 
list of integers separated by a space 

sum for case 
list of integers separated by a space 

sum for case n 
list of integers separated by a space 

我现在的问题在于如何阅读整数列表到一个数组要传递给我的功能。

这是我的主要迄今:

fstream infile("subset.txt"); 

    if(infile.is_open()){ 

    int numCases, num; 

    infile >> numCases; 

    while(infile >> num){ 
     for(int i = 0; i < numCases; i++) 
     { 
      int sum; 
      int set[30]; 

      num >> sum; 
      for(int i = 0; i < 30; i++) 
      { 
       if(num == '\n') 
       { 
        sum[i] = -1 
       } 
       else 
       {  
        num << sum[i] 
       } 
      } 

       int n = sizeof(set)/sizeof(set[0]); 

       if(subsetSum(set, n, sum) == true) 
        printf("True"); 
       else 
        printf("False"); 
     } 
    } 
} 

else 
    printf("File did not open correctly."); 

return 0; 

任何帮助,你们可以给我将不胜感激。

是的,这是为了一个任务,所以如果你宁愿给我提示,也将不胜感激。这个任务是针对算法的,我有这个工作,我只需要一个I/O。

+0

NUM ==“\ n”,因为你正在阅读一个int将无法正常工作,不一个人物。也许使用getline。 – stark 2014-11-08 20:38:11

回答

0

我会使用std::getline来读取包含数字列表的行,然后使用istringstream来解析该字符串中的数字。我也会使用std::vector而不是一个数组来保存数字。对于实际的解析,我可能会使用一对std::istream_iterator S,所以代码会是这个样子:

while (infile >> sum) { 
    std::getline(infile, line); 
    std::istringstream buffer(line); 
    std::vector<int> numbers{std::istream_iterator<int>(buffer), 
          std::istream_iterator<int>()}; 

    std::cout << std::boolalpha << subsetSum(numbers, sum); 
}