【发布时间】:2012-09-16 02:35:32
【问题描述】:
我已经为 C++ 编写了一些代码来比较两个字符串是否相等。我想要的是校对。我计划在未来将它用于更多的程序,所以这个功能做好它的工作很重要。这个功能是否看起来像一个可重复使用、便携等的功能?有没有更“最新”的方法来做到这一点?我用了一个c库,但这是一个c++程序,这是禁忌吗?
谢谢,JH。
//function to compare two strings regardless of case
//-- returns true if the two strings are equal
//-- returns false if
// --the strings are unequal
// --one of the strings is longer than 255 chars
bool isEqual(string str1, string str2){
if(str1.length()!=str2.length()) //the strings are different lengths,
return false; //they can't be equal
if((str1.length()>255) || (str2.length()>255))
return false;
char * cstr1 = new char [str1.length()+1];
strcpy (cstr1, str1.c_str());
char * cstr2 = new char [str2.length()+1];
strcpy (cstr2, str2.c_str());
for(int i=0; i<str1.length()+1; i++){
if(toupper(cstr1[i]) != toupper(cstr2[i]))
return false;
}
return true;
}
【问题讨论】:
-
糟糕,您不希望它不区分大小写。
-
对于初学者来说,你会泄漏内存。这是一件坏事。
-
你永远不会
deletecstr1和cstr2,从而泄漏他们的内存。不过,我看不出你需要这些副本有什么用,因为无论如何你都不会更改它们。 -
对于每一个新的,必须有一个删除。或者使用智能指针。
-
@LuchianGrigore 可能重复来自 2008 年。现在有更优雅的方法来比较不区分大小写的字符串:请参阅匿名的答案。
标签: c++ function code-reuse