嘿伙计们,我有一个 C++ 问题。
我正在尝试编写一个程序,该程序将打开并读取一个包含数字和名称的 txt 文件,例如:“9 john 3 jane 7 tom 2 sam 6 tom 1 nicole 5 tom 4 jane 8 ben”
一旦我阅读了文件,我需要按照分配给它们的数字顺序将名称放在向量中。所以当我打印向量时,它应该是这个顺序:
妮可
山姆
简
简
汤姆
汤姆
汤姆
本
约翰
然后我需要采用排序后的向量并将名称放在一个新文件中,其中包含每个名称出现的次数。所以当我打印这个新文件时,输出应该是这样的:
妮可 1
山姆 1
简 2
汤姆 3
本 1
约翰 1
到目前为止,这是我的代码:(忽略 count_names 函数,因为我只使用它来测试我的输出)(我稍后需要执行递归函数,所以忽略我目前不需要的任何#include)
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;
}
所以到目前为止,这是我的输出:
9
约翰
3
简
7
汤姆
2
山姆
6
汤姆
1
妮可
5
汤姆
4
简
8
本
所以我需要帮助让它们按正确的顺序排列(名称按前面的数字顺序排列),然后将它们写入新的 txt 文件,谢谢