我已经查找了许多如何执行此操作的示例,但似乎没有一个正常工作。 我有一个像这样的名字的文件
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似乎是循环的,并且由于某种原因,第二个名字被完全跳过
答案 0 :(得分:0)
使用substr
获取&#39;,&#39;的位置后,您可以使用find
(http://en.cppreference.com/w/cpp/string/basic_string/substr)方法。在字符串中。从那里,您可以通过交换0(逗号的位置)和(逗号+ 1的位置)的子串重建字符串..(字符串的长度-1)。