我正在研究电影数据库,使用户可以输入带有标题,导演和发行年份的电影。然后,数据库将所有3个输入保存为2个字符串(标题和目录)和1个int值(RY)作为发行年份,并将它们全部存储到1个文本文件中。但是,我想对电影从最新的年份到最旧的年份进行排序,但是当我们想将文本文件中的整数读入数组时,sort方法除了按用户输入的顺序打印电影外,不执行任何其他操作他们。有什么方法可以将文本文件中的整数放到数组中吗?下面是排序方法。我们希望数据库中的电影数量为7。
void sort()
{
string Title;
string fileName;
string Director;
int RY;
int array [7] = { };
int temp;
int p;
fstream file("directory.txt");
for(int i = 0; i < 7; ++i)
{
file >> array[i];
}
for (int i = 1; i < sizeof(array); i++) {
temp = array[i]; //temp = 3
p = i -1; // p = 1
while( p >=0 && array[p] > temp){
array [p + 1] = array [p];
p = p-1; //p = 0
}
array [p + 1] = temp;
}
for (int i = 7 - 1; i >= 0; i--)
cout << array[i];
cout << "Entire Movie database" << endl;
cout << "------------------------" << endl;
ifstream dir("directory.txt");
while (dir >> Title >> Director >> RY){
cout << Title << ' ' << Director << ' ' << RY << endl;
}
main();
}
您的自定义排序过程(可能)会执行应做的事情:它将对array
中的整数进行排序。以下代码仅读取文件的内容并按照读取的顺序输出:
ifstream dir("directory.txt");
while (dir >> Title >> Director >> RY){
cout << Title << ' ' << Director << ' ' << RY << endl;
}
我想知道您如何期望第一次从文件中读取7个整数,然后第二次读取所有四个字段。也许您认为字符串值会被跳过?他们不会
您的代码中还有其他问题。例如,sizeof(array)
不返回元素数,而是返回字节大小。还有一件事:为什么要从main
函数调用sort
?
你为什么要重新发明轮子?将值读入结构,将其存储在向量中,然后使用std::sort
过程。