gpt4 book ai didi

c++ - 在运行前对字符串进行操作

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

我有一个字符串: B<T>::B() [with T = int]

有什么办法可以得到 B<T> [with T = int]从这个运行时间之前不知何故? :)

简化:有没有办法得到X & Y与静态字符串分开 XY在运行前以任何形式定义为预处理器宏?

最佳答案

在当前的 C++ 中,我想不出在编译时拆分字符串的方法。大多数模板技巧不适用于字符串文字。现在,我想您希望它用于某种日志记录机制,并且您希望避免在每个方法调用中在运行时执行拆分的影响。如果是这种情况,请考虑添加一个函数来执行该操作,然后在每个函数中添加一个 static const std::string 来保存该值。该字符串只会在第一次调用该函数时初始化一次:

#define DEFINE_LOG_NAME static const std::string _function_name( parse( __PRETTY_FUNCTION__ ) )
#define LOG_NAME( level ) do { DEFINE_LOG_NAME; log( level, _function_name ); } while (0)
std::string parse( std::string const & pretty ) {
// split here, return value
}
template <typename T>
struct B {
B() {
LOG_NAME( DEBUG );
}
};

(我还没有测试过这个,所以你可能需要摆弄一下)

这将对运行时产生一些影响,但每个函数只影响一次。另请注意,这种方法不是线程安全的:如果两个线程同时调用之前未调用过的方法,则会出现竞争条件。

关于c++ - 在运行前对字符串进行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4049669/

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