jor*_*ets 1 c++ sorting string
我无法按字母顺序将字符串转换为大写字母.在第三组单词后,我的程序实际上开始减速并冻结.我究竟做错了什么?
string iName = list[i]->GetLastName(); // This just returns a string of a name
string jName = list[j]->GetLastName();
for(unsigned int k = 0; k < iName.length(); k++)
{
iName[k] = toupper(iName[k]);
}
for(unsigned int l = 0; l < jName.length(); l++)
{
iName[l] = toupper(jName[l]);
}
Run Code Online (Sandbox Code Playgroud)
Hau*_*eth 12
使用STL algorithm库:
std::for_each(iName.begin(), iName.end(), std::toupper);
Run Code Online (Sandbox Code Playgroud)
或(由@Kerrek SB建议)
std::transform(s.begin(), s.end(), s.begin(), std::toupper);
Run Code Online (Sandbox Code Playgroud)
正如其他人所说,你混合了iname和jname ....你为什么这样做?
因为你复制粘贴!
所以,编程的早期教训就是尽量避免复制粘贴!而是尝试创建功能.....
在你的情况下......
void stringToUpper(string &s)
{
for(unsigned int l = 0; l < s.length(); l++)
{
s[l] = toupper(s[l]);
}
}
Run Code Online (Sandbox Code Playgroud)
那么你可以做到
stringToUpper(iName);
stringToUpper(jName);
Run Code Online (Sandbox Code Playgroud)
这种方法减少了大量与复制粘贴相关的错误,并且通常有助于使您的程序更加模块化