2015-02-05 72 views
-1

我正在尝试编写一个程序,该程序需要3个输入.txt文件,使用模板对文件进行排序,然后将排序后的数据写入3个输出文件。我想要排序的3个输入.txt文件是IntFile.txt,FloatFile.txt和QUOTES.txt。存储在文件中的数据类型分别是整数,双精度和字符串。现在,我正试图让IntFile.txt进行排序,并且无法读取.txt文件并将其保存到数组以发送到我的模板进行排序。我无法找到一种方法来从文件中读取最后一个数据后停止for循环。迄今为止,我已经写程序是C++使用模板排序.txt文件

`#include <iostream> 
#include <fstream> 
#include <iomanip> 
#include <string> 
#include <cstdlib> 
#include "sorting.h" 
using namespace std; 

int main() 
{ 

    ifstream inNumbers("IntFile.txt"); 
    ifstream inFloaters("FloatFile.txt"); 
    ifstream inWords("QUOTES.txt"); 
    ofstream outNumbers("SortedInt.txt"); 
    ofstream outFloaters("SortedFloat.txt"); 
    ofstream outWords("SortedQuotes.txt"); 

    int i, length = 0; 
    int data[100]; 

    if (!inNumbers) 
    { 
     cerr << "IntFile.txt file could not be opened" << endl; 
     exit(1); 
    } 

    if (!inFloaters) 
    { 
     cerr << "FloatFile.txt file could not be opened" << endl; 
     exit(1); 
    } 

    if (!inWords) 
    { 
     cerr << "QUOTES.txt file could not be opened" << endl; 
     exit(1); 
    } 

    for (i = 0; data[i] ; ++i) 
    { 
     inNumbers >> data[i]; 
     length += 1; 
    } 

    sorting(data[100], length); 

}` 

这是数字是如何出现在IntFile.txt:

55 67 458 23 81 33 
782 375 528 
405 324 950 46 
14 864 551 38 167 518 630 
+0

是在'IntFile.txt'号码在不同的行? – 2015-02-05 19:36:33

+0

我编辑了问题以显示示例输入 – 2015-02-05 19:46:03

+0

@StephenOsborne'sorting(data [100],length);'这不符合您的想法。这不会将数组发送到“排序”。它将(无效)条目'data [100]'发送到排序函数。 – PaulMcKenzie 2015-02-05 19:47:15

回答

1

此块是不对的。

for (i = 0; data[i] ; ++i) 
{ 
    inNumbers >> data[i]; 
    length += 1; 
} 

您还没有初始化data,但使用的是在for环路及其成员的值。

你需要的是沿着以下逻辑线的东西:

for (i = 0; i < 100 && inNumbers; ++i) 
{ 
    inNumbers >> data[i]; 
    if (inNumbers) 
    { 
     length += 1; 
    } 
}