Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将txt文件排序为c++; 嘿,我有一个C++问题。_C++_Sorting_Vector - Fatal编程技术网

将txt文件排序为c++; 嘿,我有一个C++问题。

将txt文件排序为c++; 嘿,我有一个C++问题。,c++,sorting,vector,C++,Sorting,Vector,我正在尝试编写一个程序,该程序将打开并读取包含数字和名称的txt文件,例如: “9约翰3简7汤姆2山姆6汤姆1妮可5汤姆4简8本” 一旦我读了这个文件,我需要把这些名字按照分配给它们的数字顺序放在一个向量中。所以当我打印向量时,它应该是这样的顺序: 妮可 萨姆 简 简 汤姆 汤姆 汤姆 本 约翰 然后,我需要获取排序后的向量,并将名称放入一个新文件中,其中包含每个名称出现的次数。因此,当我打印此新文件时,输出应如下所示: 妮可1 山姆1 简2 汤姆3 本1 约翰1 到目前为止,这是我的代码: (

我正在尝试编写一个程序,该程序将打开并读取包含数字和名称的txt文件,例如: “9约翰3简7汤姆2山姆6汤姆1妮可5汤姆4简8本”

一旦我读了这个文件,我需要把这些名字按照分配给它们的数字顺序放在一个向量中。所以当我打印向量时,它应该是这样的顺序:

妮可

萨姆

汤姆

汤姆

汤姆

约翰

然后,我需要获取排序后的向量,并将名称放入一个新文件中,其中包含每个名称出现的次数。因此,当我打印此新文件时,输出应如下所示:

妮可1

山姆1

简2

汤姆3

本1

约翰1

到目前为止,这是我的代码: (忽略count_names函数,因为我只是用它来测试我的输出) (稍后我将需要执行递归函数,因此忽略目前不需要的任何#include)

使用名称空间std;
空洞填充向量(向量和v);
无效打印向量(向量v);
int count_名称(向量v);
int main()
{
向量v;
字符串s;
填充向量(v);
int num_名称;
num_strings=count_strings(v)/2;
cout>s;
}
}
无效打印向量(向量v)
{
对于(int i=0;icout如果数字是唯一的,则将数字和名称放入a。在进行此操作时,计算每个名称在a中的出现次数。

您可以执行一个
std::vector
,只需使用
std::sort(.begin(),.end()
对成员进行排序。 要创建
std::pair
,请使用您的号码和链接的名称调用构造函数

using namespace std;

void fill_vector ( vector<string> &v );

void print_vector ( vector<string> v );

int count_names ( vector<string> v );

int main()
{

    vector<string> v;
    string s;

    fill_vector(v);

    int num_names;
    num_strings = count_strings(v)/2;
    cout << "number of names " << num_names << endl;

    print_vector(v);

    return 0;

}

void fill_vector ( vector<string> &v )
{
    string s;

    ifstream fin;
    string input = "toy_names.txt";
    fin.open ( input.c_str() );
    fin >> s;

    while ( !fin.eof() )
    {
        v.push_back ( s );
        fin >> s;
    }
}

void print_vector ( vector<string> v )
{

    for ( int i = 0; i < v.size(); i++ )
        cout << v[i] << endl;
}

int count_names ( vector<string> v )
{

    int counter = 0;
    for ( int i = 0; i < v.size(); i++ )
    {
        counter++;
    }

    return counter;
}