gpt4 book ai didi

c++ - 扩展 C++ 字符串成员函数

转载 作者:可可西里 更新时间:2023-11-01 16:26:42 27 4
gpt4 key购买 nike

我需要进行不区分大小写的查找,并找到了以下代码来解决问题

bool ci_equal(char ch1, char ch2)
{
return toupper((unsigned char)ch1) == toupper((unsigned char)ch2);
}

size_t ci_find(const string& str1, const string& str2)
{
string::const_iterator pos = std::search(str1. begin ( ), str1. end ( ), str2.
begin ( ), str2. end ( ), ci_equal);
if (pos == str1. end ( ))
return string::npos;
else
return pos - str1. begin ( );
}

这让我想知道如何才能使它成为“string”的成员函数,以便可以像这样调用它:

string S="abcdefghijklmnopqrstuv";
string F="GHI";

S.ci_find(F);

我意识到非英语语言的大小写转换存在很多问题,但这不是我感兴趣的问题。

作为新手,我很快就迷失在容器和模板中。

有没有办法做到这一点?有人能给我举个类似的例子吗?

最佳答案

我想大多数更有经验的 C++ 程序员都会同意这是个糟糕的主意。如果有的话,std::string 已经有太多的成员函数,再添加更多会使情况变得更糟。更糟糕的是,如果您打算这样做,您可能会通过继承来完成它——但是 std::string 并不是设计为用作基类,而是将其用作一个基类将导致代码脆弱且容易出错。

有关如何执行此操作的另一个想法,您可能需要阅读 Guru of the Week #29 .不过,请务必阅读整篇文章,以了解如何执行此操作,以及您可能不想执行此操作的原因。最终,您现在拥有的可能是最佳选择——将不区分大小写的搜索与 std::string 本身分开。

关于c++ - 扩展 C++ 字符串成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3542030/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com