在C++中为字符串创建自定义函数
Creating Custom Functions for Strings in C++
我使用c++才一个月左右,我想知道是否可以为字符串之类的东西创建自己的自定义函数。例如,要想找到字符串的大小,你可以做stringname.size()
,但如果我想做一个像stringname.customfunction()
这样的函数,我可以决定customfunction()
的作用。我想这样做,这样我就可以创建一个.toLower()函数,将整个字符串转换为lower。如果这是一个更棘手的问题,我很抱歉,但任何帮助都将不胜感激。
是的,您可以创建自定义函数,但不能直接作为现有类的成员函数。
最简单也是最好的方法就是创建独立的函数。
这意味着你会把它称为customfunction( s )
。
您可以通过创建自己的字符串类来实现这一点,但正如我所说,您的意思是像在python中那样调用"THE String".toLower()
。据我所知,这在c++中实际上是不可能的。
再一次,你最好的机会是自己上课,这样你就可以给MyString("THE String").toLower()
这样的人打电话了。或者只需创建一个函数toLower,它接受一个字符串并返回一个字符串toLower("THE String")
您不能直接使用,但您应该能够通过继承std::string
(或basic_string<char>
):来模拟它
class mystring : public std::string
{
public:
void customfunction() { /* ... */ }
};
注意:但是这样做是个坏主意。除了@Cheers和hth.-的链接Alf提到,Herb Sutter讨论了std::string的接口太宽,进一步扩展它是个坏主意。
这可能有点高级,也很受鄙视,但您可以更改实际的源文件。我强烈建议你不要这样做。
您应该只制作一个简单的函数void toLower(std::string str);
,它将为您转换它。(您可以用toLower(str);
调用此函数。)
- 如何在创建自定义迭代器时获得 std::p air 的第一个和第二个?
- 将自定义函数传递到基抽象类中以延迟执行
- Arduino:在 loop() 和自定义函数中运行相同的代码时出现问题
- 将具有固定签名的自定义函数名称注入 CRTP
- 如何为使用创建窗口创建的窗口创建自定义背景颜色
- 从函数为 std::vector 创建自定义扩展
- 是否有任何统一的方法可以在 c++ 中创建自定义比较器?
- 查询数据库以在 C++ 中创建自定义类集合的最佳方法
- 每个类实例的自定义函数 (C++)
- 创建自定义向量类错误
- C++,当函子不是一个选项时,我如何编写带有自定义函数调用的模板化 RAII 包装器?
- C ++ Google test (gtest):如何创建自定义断言和期望?
- 具有自定义函数的 C++ 矢量构造函数
- 有没有办法使用 googletest 创建自定义参数生成器?
- 自定义函数转换错误?
- 模板中的自定义函数C++
- 在 V8 中创建自定义 JavaScript 函数
- 创建自定义哈希函数unordered_map时出现问题
- 如何为包装需要2个参数的c函数的unique_ptr类成员创建自定义deleter
- 在C++中为字符串创建自定义函数