我正在使用Howard Hinnart的{fmt}库进行打印。
不幸的是,我的程序在几天后崩溃了,因为我有一个无效的格式字符串。 很容易修复--但如果有更多呢?
可以对字符串格式进行编译时检查,这将捕获此错误:
// Replace this:
fmt::print("{}",42)
// With this:
fmt::print(FMT_STRING("{}"),42)
我可以在整个代码库中手动完成大约1000个print语句。
但我想知道--在Visual Studio中,有没有一种方法可以使用正则表达式和查找/替换来实现这一点?
我已经使用了。NET RegEx tester和字符串匹配:
print[(]".*".*[)];
然而,在我尝试了许多小时之后,一个强大的搜索和替换功能仍然没有实现。
在VSCode中,这样做是有效的:
模式:.*(fmt::print\()“\{\}”(,.*\)).*
替换:$1FMT_String(“{}”)$2
如果您是一个Python爱好者,如果您将C++脚本作为字符串读入,那么这也是可行的:
import re
pattern = '.*(fmt::print\()"{}"(.*\)).*'
fmt_snippet = 'fmt::print("{}",42)'
re.sub(add_part_pattern, r'\1FMT_STRING("{}")\2', a)