gpt4 book ai didi

C++ 17在逗号上拆分constexpr字符串并在编译时具有元素数量?

转载 作者:行者123 更新时间:2023-12-03 08:38:48 27 4
gpt4 key购买 nike

我在编译时有一个由 char 数组表示的以逗号分隔的字段列表:
constexpr static char arrayStr[] = "a,b,c";
我想在“,”上拆分,并在编译时获得可用的元素数量。伪代码:
constexpr static size_t numFields = SPLIT(arrayStr, ",");
将返回 3。

有什么办法可以使用 C++17 实现这一点吗?

最佳答案

I would like to convert the char array to string, then split on "," and have the number of elements available at compile time.



如果“字符串”是指“ std::string”,则不是 constexpr所以它与编译时计算不兼容。

如果“字符串”接受 C 风格的字符串,则为 char const * ,如果您对单个 char 的分隔符感兴趣,您可以尝试以下操作
#include <iostream>

constexpr static char arrayStr[] = "a,b,c";

constexpr std::size_t SPLIT (char const * str, char sep)
{
std::size_t ret { 1u };

while ( *str )
if ( sep == *str++ )
++ ret;

return ret;
}

int main ()
{
constexpr auto numFields = SPLIT(arrayStr, ',');

std::cout << numFields << std::endl; // print 3
}

关于C++ 17在逗号上拆分constexpr字符串并在编译时具有元素数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58175818/

27 4 0
文章推荐: tensorflow - BERT + 自定义层训练性能随着时代的推移而下降
文章推荐: javascript - 将
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com