如何在C++中分隔和排列名字和全名字符串

How to separate and arrange firstname from fullname string in C++

本文关键字:排列 全名 字符串 分隔 C++      更新时间:2023-10-16

我有:

struct student{ 
string name, 
float GPA 
}; 

我想按字母顺序排列名字(名字,如果名字相同,则按姓氏排列);

所以我认为我需要一个单独的 FirstName 函数和一个单独的 LastName 函数,但我不知道这些函数返回哪个值。如果是字符串,比较时如何使用它(多次使用)

例如:

struct student{ 
string name, 
float GPA 
}; 
student Student[n];
void input(student Student[], int n){ ... };

现在,我想按字母顺序排列学生[i].name(i从0到n)

首先,我会比较学生的名字[i].name,如果他们相同,我会比较他们的姓氏,如果他们仍然相同,我会随机排列它们

例如:

  1. 阮仁英

  2. 苏文英

  3. 沙嗨哈

  4. 武德雄山

所以我想我需要一个单独的 FirstName 函数和单独的姓氏函数

if string s="Vo Duc Hung Son";

那么名字是儿子,姓是沃

但问题是,我不知道这些函数应该返回哪个值。如果是字符串,比较时如何使用它(多次使用);

提前谢谢你

struct Name{ 
string first, 
string last 
}; 
struct student{ 
Name name, 
float GPA 
}; 

现在您可以编写一个函数来比较name.firstname.last

我不确定我是否理解。但是你有字符串名称,例如:name = "Dennis Bond",你需要两个字符串。名字="丹尼斯",第二个名字="邦德"?

void split_name (string name, string& firstname, string& secondname){
istringstream is(name);
is >> firstname >> secondname;
}

void split_name (string name, vector<string>& split){
istringstream is(name);
string word;
while (is >> word ) split.push_back(word);
}