gpt4 book ai didi

c++ - 将 std::string_view 与需要以空字符结尾的字符串的 api 一起使用

转载 作者:可可西里 更新时间:2023-11-01 15:37:00 35 4
gpt4 key购买 nike

我有一个采用 std::string_view 并使用函数的方法,该函数将空终止字符串作为参数。例如:

void stringFunc(std::experimental::string_view str) {
some_c_library_func(/* Expects null terminated string */);
}

问题是,处理这种情况的正确方法是什么? str.to_string().c_str() 是唯一的选择吗?我真的很想在这个方法中使用 std::string_view,因为我在其中传递了不同类型的字符串。

最佳答案

我通过创建一个名为 zstring_view 的备用 string_view 类解决了这个问题。它是从 string_view 私有(private)继承的,并包含其大部分接口(interface)。

主要区别是 zstring_view 不能从 string_view 创建。此外,任何将从末尾删除元素的 string_view API 都不是接口(interface)的一部分,或者它们返回 string_view 而不是 zstring_view

它们可以从任何以 NUL 结尾的字符串源创建:std::string 等等。我什至为它们创建了特殊的用户定义文字后缀:_zsv

想法是,只要您不手动将非 NUL 终止的字符串放入 zstring_view,所有 zstring_view 都应该以 NUL 终止。与 std::string 一样,NUL 字符不是字符串大小的一部分,但它在那里

我发现它对于处理 C 接口(interface)非常有用。

关于c++ - 将 std::string_view 与需要以空字符结尾的字符串的 api 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41286898/

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