如何在C ++

时间:2017-03-21 10:56:18

标签: c++

我有:

struct student{ 
  string name, 
  float GPA 
}; 

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

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

例如:

struct student{ 
    string name, 
    float GPA 
}; 

student Student[n];

void input(student Student[], int n){ ... };

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

首先,我会比较Student [i] .name的名字,如果它们是相同的,我会比较它们的姓氏,如果它们仍然相同,我会随机排列< / p>

例如:

  1. Nguyen Nhu Anh

  2. So Van Anh

  3. Sa Hi Ha

  4. Vo Duc Hung Son

  5. 所以我认为我需要一个separateFirstName函数和separateLastName函数

    if string s="Vo Duc Hung Son";
    

    然后第一个名字是Son,姓氏是Vo

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

    提前谢谢

2 个答案:

答案 0 :(得分:1)

struct Name{ 
  string first, 
  string last 
}; 

struct student{ 
  Name name, 
  float GPA 
}; 

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

答案 1 :(得分:0)

我不确定我是否理解。但是你有字符串名称,例如:name =“Dennis Bond”,你想要两个字符串。 firstname =“Dennis”和secondname =“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);
}