C++ 使用模板对 .txt 文件进行排序
C++ Sorting .txt files using a template
我正在尝试编写一个程序,它接受 3 个输入 .txt 文件,使用模板对文件进行排序,并将排序后的数据写入 3 个输出文件。我尝试排序的 3 个输入 .txt 文件是 IntFile.txt、FloatFile.txt 和 QUOTES.txt。文件中存储的数据类型分别为整数、双精度数和字符串。现在我正试图让 IntFile.txt 进行排序,但在读取 .txt 文件并将其保存到数组以发送到我的模板进行排序时遇到了问题。一旦从文件中读取最后一个数据,我就无法找到停止 for 循环的方法。到目前为止我写的程序是
`#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
这个方块不对。
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;
}
}
我正在尝试编写一个程序,它接受 3 个输入 .txt 文件,使用模板对文件进行排序,并将排序后的数据写入 3 个输出文件。我尝试排序的 3 个输入 .txt 文件是 IntFile.txt、FloatFile.txt 和 QUOTES.txt。文件中存储的数据类型分别为整数、双精度数和字符串。现在我正试图让 IntFile.txt 进行排序,但在读取 .txt 文件并将其保存到数组以发送到我的模板进行排序时遇到了问题。一旦从文件中读取最后一个数据,我就无法找到停止 for 循环的方法。到目前为止我写的程序是
`#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
这个方块不对。
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;
}
}