2014-11-08 117 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); 
}