首页 > 解决方案 > 如何像在 Python 中一样在 C++ 中实现 f-string?

问题描述

我想为 C++ 创建一个 F 字符串,就像在 Python 中一样。但我不明白花括号 {} 中的表达式是如何解析的。

示例(Python):

world = "world"
print(f "Hello {world}")

我如何做同样的事情,但在 C++ 中?

std::string world = "world!"
std::cout << f("Hello {world}") << std::endl;

输出

Hello world!

标签: c++

解决方案


一旦程序被编译(并且不使用调试模式),变量的名称就会丢失。因此,即使您解析了 f 字符串,您也没有直接的方法来识别预期的变量。

但这是一个由预编译器解决的真实用例:您使用特殊声明,这些声明要么依赖于宏来保存 f 字符串中允许的变量名称,要么使用预编译器阶段来翻译将特殊代码转换为 C++ 代码 + 进行所需的特殊处理(此处将变量名称保存在映射中)。使用宏的示例可以在 Microsoft MFC 中找到,预编译器的示例可以在qt或 Oracle pro*C 中找到。

恐怕开发起来会比程序员的收益更复杂,所以我的回答归结为它是可能的,但恕我直言不值得


推荐阅读