试图用C ++对文本文件进行冒泡排序

时间:2017-02-25 14:30:13

标签: c++ sorting text-files ifstream ofstream

我需要创建一个程序来读取文本文件并显示其内容。我只能让我的程序读取文本文件。但是,我不知道如何调用我的函数来对文件进行排序。有没有办法将其内容变成一个字符串供我的函数进行排序?

这是我的计划:

#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

1 个答案:

答案 0 :(得分:0)

如果您将file_contentsstring更改为std::vector<string>,您将能够以类似于操纵普通内容的方式对其进行操作 - 阵列。将所有数据存储在单个字符串中(就像在发布的代码片段中一样)会使子字符串排序变得困难(不可能?),因为对于一个子字符串结束且下一个子字符串开始的排序算法来说,这并不明显。