String将第一个单词移动到字符串结尾

时间:2016-11-28 20:51:51

标签: c++ string append

我已经查找了许多如何执行此操作的示例,但似乎没有一个正常工作。 我有一个像这样的名字的文件

  Fen' Harel, Solas
  De Fer, Vivienne 
  Rainier, Thom
  Blackwall, Gordon
  Nightingale, Leliana 

有更多名字,但这只是一个例子 名称格式为LASTNAME,FIRSTNAME 我想以FIRSTNAME LASTNAME //顺序输出它们//没有","

// before this is the functions getting the data from the string 
//and putting it into arrays, and they all work

//This function loops the output for each set of names in the file
void output(string n[], int s){

for(int i = 0; i<s;i++){
    formatName(n[i]);
cout<<endl;
}
}
// This function adjusts the format of the names
void formatName(string names){
    string name ="";
    int size = 0;
    size = names.find(",");
    for(int i=0;i<size;i++){
    name = moveFirstToLast(names);  
    }

    cout<<name; 
}
//This function is what should move the first name to the last name but is not working
string moveFirstToLast(string name){
    name = name + name[0];
    name.erase(0,1);
    return name;
}

运行程序时会显示以下内容

 en Harel, Solas
De Fer, Vivienne 
 ainier, Thom
 lackwall, Gordon
 ightingale, Leliana

所以有一个问题,第一个名字没有被附加到名称上,而且doe snot似乎是循环的,并且由于某种原因,第二个名字被完全跳过

1 个答案:

答案 0 :(得分:0)

使用substr获取&#39;,&#39;的位置后,您可以使用findhttp://en.cppreference.com/w/cpp/string/basic_string/substr)方法。在字符串中。从那里,您可以通过交换0(逗号的位置)和(逗号+ 1的位置)的子串重建字符串..(字符串的长度-1)。