gpt4 book ai didi

c++ - 使用用户定义的文字对字符串进行编译时加密

转载 作者:行者123 更新时间:2023-11-30 05:40:17 25 4
gpt4 key购买 nike

我知道新的 C++ 标准允许用户定义文字,并且可以在编译时生成它们。

但是,我对整个模板元编程世界还很陌生,我正在尝试使用一些示例,但仍然没有成功,因为这是我第一次接触到这个特定功能。

假设我有一个字符串:

std::string tmp = "This is a test message";

我想在编译时使用以下方法对其进行加密:

std::string tmp = "This is a test message"_encrypt;

这甚至有可能是我正在尝试的吗?

我目前正在使用 VS2015,因此非常感谢任何帮助或反馈。

最佳答案

Is it even possible what I'm trying to attempt?

是的,这是可能的*可以预先计算并直接放入源代码的内容也可以由编译器在编译时完成。

但是,您不能使用 std::string。它不是文字类型。像这样的东西:

 constexpr std::string tmp = "some string literal"

永远不会编译,因为std::stringstd::basic_string 通常没有constexpr 构造函数.

因此,您必须使用 const char [] 作为元编程的输入;之后,您可以将其分配给 std::string
注意:元编程有一些您需要考虑的限制:您无法使用您原本可以使用的许多工具,例如 newmalloc,因为示例:您必须在堆栈上分配您的变量。


*编辑: 不完全是 UDL,如@m.s。指出。实际上,您会收到一个指向 const char 的指针和字符串的长度。这在 constexpr 场景中非常严格,我怀疑是否有可能找到一种方法来处理该字符串。在“正常”元编程中,您可以将大小作为常量表达式,编译时加密是可能的。

关于c++ - 使用用户定义的文字对字符串进行编译时加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31746383/

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