尝试对 C++ 中的文本文件进行冒泡排序
Trying to bubble sort a text file in C++
我需要创建一个程序来读取文本文件并显示其内容。我只能让我的程序读取文本文件。但是,我不知道如何调用我的函数来对文件进行排序。有没有办法把它的内容变成一个字符串,让我的函数对它进行排序?
这是我的程序:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
void bubble_sort(string arr[], int length)
{
string temp;
int iteration;
int index;
for (iteration=0; iteration<length; iteration++)
{
for (index=0; index<length-iteration; index++)
{
if (arr[index].compare(arr[index+1]) != 0)
{
temp = arr[index];
arr[index] = arr[index+1];
arr[index+1] = temp;
}
}
}
}
int main(void)
{
ifstream file("list.txt");
string str;
string file_contents;
while (getline(file, str))
{
file_contents += str;
file_contents.push_back('\n');
}
cout << file_contents;
return(0);
}
这是文本文件:
2 Witcher CdProjectRed 2015 9.3
4 Assassin Ubisoft 2013 8.3
5 Dragon Age Bioware 2014 8.5
3 Mass Effect Bioware 2013 8.9
1 Doom IDsoftware 2016 8.5
如果您将 file_contents
从 string
更改为 std::vector<string>
,您将能够以类似于操作普通文件内容的方式对其进行操作-旧数组。将所有数据存储在一个字符串中(就像您在发布的代码片段中所做的那样)会使子字符串的排序变得困难(不可能?),因为对于排序算法来说,一个子字符串结束而下一个子字符串开始的位置并不明显。
我需要创建一个程序来读取文本文件并显示其内容。我只能让我的程序读取文本文件。但是,我不知道如何调用我的函数来对文件进行排序。有没有办法把它的内容变成一个字符串,让我的函数对它进行排序?
这是我的程序:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
void bubble_sort(string arr[], int length)
{
string temp;
int iteration;
int index;
for (iteration=0; iteration<length; iteration++)
{
for (index=0; index<length-iteration; index++)
{
if (arr[index].compare(arr[index+1]) != 0)
{
temp = arr[index];
arr[index] = arr[index+1];
arr[index+1] = temp;
}
}
}
}
int main(void)
{
ifstream file("list.txt");
string str;
string file_contents;
while (getline(file, str))
{
file_contents += str;
file_contents.push_back('\n');
}
cout << file_contents;
return(0);
}
这是文本文件:
2 Witcher CdProjectRed 2015 9.3
4 Assassin Ubisoft 2013 8.3
5 Dragon Age Bioware 2014 8.5
3 Mass Effect Bioware 2013 8.9
1 Doom IDsoftware 2016 8.5
如果您将 file_contents
从 string
更改为 std::vector<string>
,您将能够以类似于操作普通文件内容的方式对其进行操作-旧数组。将所有数据存储在一个字符串中(就像您在发布的代码片段中所做的那样)会使子字符串的排序变得困难(不可能?),因为对于排序算法来说,一个子字符串结束而下一个子字符串开始的位置并不明显。