草庐IT

c++ - 不区分大小写的字符串比较 C++

这个问题在这里已经有了答案:Case-insensitivestringcomparisoninC++[closed](30个答案)关闭8年前。我知道有一些方法可以忽略大小写比较,涉及遍历字符串或一个goodone在SO上需要另一个库。我需要把它放在其他可能没有安装它的计算机上。有没有办法使用标准库来做到这一点?现在我正在做...if(foo=="Bar"||foo=="bar"){cout这可以大大提高我的代码的可读性和可用性。感谢您阅读到这里。

c++ - 不区分大小写 unordered_map<string, int>

如何创建不区分大小写的unordered_map?是否覆盖key_equal足够了,否则我还需要更新hasher? 最佳答案 Hasher也需要更新,因为默认的哈希算法doesnotproduceidenticalhashcodeforstringsthatdifferonlyinthecaseoftheirsymbols-旨在处理不区分大小写的字符串的哈希码函数的一个基本属性。std::strings1="Hello";std::strings2="hello";std::hashhash_fn;size_thash1=hash_

c++ - 访问者模式是区分 C++ 中参数类型的最快方法吗?

访问者模式是否是在C++中完成方法参数类型识别(对参数而非成员类进行有效的单一分派(dispatch))的最快方式?我可能知道我想在未知子类型的元素上调用的确切方法,因此总是在中进行额外的虚拟方法调用,如V::visit(A*)>A::accept(V&v){v.visit(this);是不可取的。//IstheVisitorpatternrecommendedhere?(EinheritsDinheritsB.)classFoo{public:virtualvoidvisit(B*){result=3;}virtualvoidvisit(D*){result=4;}virtualvo

c++ - 使用operator[]时如何区分读/写操作

我需要编写一个带有重载运算符[]的类,当使用运算符[]读取或写入数据时,它具有不同的行为。举一个我想要实现的实际例子,假设我必须编写一个名为PhoneBook的类的实现,它可以按以下方式使用:PhoneBookphoneBook(999999);//999999isthedefaultnumberwhichshouldbe//usedwhencallingsomeonewhoisnotinthephonebookphoneBook["Paul"]=234657;//addsPaul'snumberphoneBook["John"]=340156;//addsJohn'snumber//

c++:使用类型安全来区分两个int参数的类型

我有各种带有两个int参数的函数(我自己编写函数和调用代码)。恐怕会混淆某些调用中的参数顺序。如果我使用错误的参数序列(所有参数都是int)调用函数,我如何使用类型安全让编译器警告我或出错?我试过typedefs:Typedef不会触发任何编译器警告或错误:typedefintX;typedefintY;voidfoo(X,Y);Xx;Yy;foo(y,x);//compiledwithoutwarning) 最佳答案 您必须创建包装器类。假设您有两个不同的单位(例如,秒和分钟),它们都表示为整数。您需要类似以下内容才能完全类型安全

c++ - 不区分大小写的 STL 容器(例如 std::unordered_set)

制作std::unordered_setCASE-INSENSITIVE容器的最短、最跨平台的方法是什么?my_set.insert("Apples");my_set.insert("apples");//Insertdoesn'toccurbecauseofduplicateitem我知道STL提供了Hash和Pred。Hash应该是什么?Pred应该是什么?如果它们不是内置的,那么请提供它们的代码以及它们的使用示例(即我如何声明std::unordered_set?)。由于批评,我将详细说明我正在尝试做的事情。我需要一个高性能的透明HTTP代理服务器,它所做的其中一件事就是快速查找

c++ - exprtk 中的变量区分大小写吗?

当我在我的exprtk字符串中定义一个表达式时,比如varx:=sqrt(y);然后我尝试添加另一个变量varX:=2*z;我会遇到冲突吗?提前致谢。 最佳答案 截至2017年3月,exprtk的作者添加了对区分大小写变量的支持:https://github.com/ArashPartow/exprtk/blob/master/readme.txt#L4477只需包含#defineexprtk_disable_caseinsensitivity就可以了! 关于c++-exprtk中的变量

c++ - 如何用空格和制表符区分文件行?

这个问题在这里已经有了答案:HowdoItokenizeastringinC++?(37个答案)关闭4年前。我有一个格式如下的文件mon01/01/1000(TAB)hihello(TAB)howryou有没有办法以单独使用'\t'作为分隔符(而不是空格)的方式阅读文本?所以示例输出可以是,mon01/01/1000hihellohowryou我不能使用fscanf(),因为它只读到第一个空格。

c++ - 区分零和负零

我在我的代码中遇到过这样一种情况:函数返回一个double值,而这个double值可能是零、负零或完全是另一个值。我需要区分零和负零,但默认的双重比较不需要。由于double格式,C++不允许使用按位运算符比较double,所以我不确定如何进行。如何区分这两者? 最佳答案 调用std::signbit()确定符号位的状态。 关于c++-区分零和负零,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/qu

c++ - 如何区分客户端是从服务器端使用 TCP 还是 UDP

我正在编写简单的客户端-服务器程序。客户端使用UDP或TCP向服务器发送一些消息。服务器必须能够同时支持UDP和TCP。如果客户端使用UDP发送消息,客户端的方法调用顺序是socket(),bind(),sendto(),recvfrom(),close()而服务器端是socket(),bind(),sendto(),recvfrom(),close().如果它使用TCP,服务器中的调用顺序是socket()、bind()、listen()、accept()、send()、recv()、close()。那在客户端是socket(),bind(),connect(),send(),rec