gpt4 book ai didi

c++ - 静态检查 const char* 包含空格

转载 作者:太空宇宙 更新时间:2023-11-04 14:58:28 33 4
gpt4 key购买 nike

有没有办法在编译时检查(断言)const char* 是否包含空格?

类似于:

const char* cstr1 = "ok";
const char* cstr2 = "very bad";

check( cstr1 ); //OK
check( cstr2 ); //Fail to compile

类型相同,但可以定义一些棘手的模板元编程技术来实现。

重点是,所有需要的信息都在编译时固定。

这个问题应该与“From const char variable to type”问题有关,我认为可以通过元编程技术通过编译时散列来解决。

预先感谢您的帮助。

最佳答案

您不能使用普通字符串,因为模板无法访问它们的字符,但您可以使用 MPL 字符串:

#include <boost/mpl/char.hpp>
#include <boost/mpl/string.hpp>
#include <boost/mpl/contains.hpp>
#include <boost/utility/enable_if.hpp>

typedef boost::mpl::char_<' '> space;
typedef boost::mpl::string<'o', 'k'> cstr1;
typedef boost::mpl::string<'v', 'e', 'r', 'y', ' ', 'b', 'a', 'd'> cstr2;

boost::disable_if< boost::mpl::contains<cstr1, space> >::type check();
// boost::disable_if< boost::mpl::contains<cstr2, space> >::type check();

第二行编译失败

关于c++ - 静态检查 const char* 包含空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3151963/

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