我在将字符串转换为大写字母时遇到麻烦。在第三组单词之后,我的程序实际上开始变慢并冻结。我究竟做错了什么?

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]);
  }

最佳答案

正如其他人所说,您混合了iname和jname ....,为什么这么做呢?

因为你复制粘贴!

因此,编程方面的一个很好的早期类(class)就是尝试避免复制粘贴!而是尝试创建函数.....

就你而言...

void stringToUpper(string &s)
{
   for(unsigned int l = 0; l < s.length(); l++)
  {
    s[l] = toupper(s[l]);
  }
}

那你就可以
stringToUpper(iName);
stringToUpper(jName);

这种方法减少了很多与复制粘贴相关的错误,并且通常可以使您的程序更加模块化

07-25 21:46