gpt4 book ai didi

c++多个接口(interface)到同一功能模板

转载 作者:太空宇宙 更新时间:2023-11-04 13:22:36 25 4
gpt4 key购买 nike

我有几种方法可以处理我通常保存在 std::string 中的 utf8 编码字符串。

在相同的情况下,虽然我只是对数据使用 const char*,或者数据是更大字符串的一部分,但我不想创建子字符串。

所有的功能归结为一个通用的方法说:

void foo(int a, int b, const char* beginStr, const char* endStr);

现在如果我想避免一些丑陋,我会创造

void foo(int a, int b, const char* beginStr, const char* endStr);
void foo(int a, int b, const char* str);
void foo(int a, int b, const std::string% str);

在某些情况下甚至:

void foo(int a, int b, const std::string::const_iterator& beginStr
const std::string::const_iterator& endStr);

这看起来不错,但正如我提到的,我有几种方法,维护所有这些风格真的很烦人。

我正在寻找的是一些可以消除对每个接口(interface)进行倍增的需求的魔法。 c++11 的一些特性能否在不影响性能的情况下帮助解决这个问题——让它不那么啰嗦?

最佳答案

如评论中所述,作为 basic_string_view 的包装器可能会解决一部分问题。
可变参数模板可能会解决另一部分(不要显式 basic_string_view):

void foo_impl(int a, int b, const basic_string_view& str); // the real implementation

template <typename ... Ts>
void foo(int a, int b, Ts&&... args) {
foo_impl(a, b, basic_string_view{std::forward(args...)});
}

关于c++多个接口(interface)到同一功能模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34552549/

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