我有使用 Boost 库的简单 C++ 代码:
auto jsonStringPtr = jsonValuePtr->if_string();
Run Code Online (Sandbox Code Playgroud)
如何将此值转换为不带引号的 std::string ?
我测试了这段代码:
std::string myString = boost::json::serialize(*jsonStringPtr);
Run Code Online (Sandbox Code Playgroud)
但它包含引号,例如“abc”插入 abc...有什么想法吗?
#编辑
例子:
boost::json::error_code errorCode;
boost::json::value jsonValue = boost::json::parse("{\"fff\": \"abc\"}", errorCode);
auto jsonString = jsonValue.as_object()["fff"].as_string();
std::string myString = boost::json::serialize(jsonString);
Run Code Online (Sandbox Code Playgroud) 反射 TS - 此处描述的 C++ 功能:https : //en.cppreference.com/w/cpp/keyword/reflexpr
我正在寻找有关此功能的任何信息。
我有这个描述编译器支持的表:https : //en.cppreference.com/w/cpp/compiler_support
但我没有看到此功能是计划中的,或者此功能的名称可能不同?
哪个 C++ 版本将支持此功能?
我在哪里可以找到有关此主题的任何教程/信息?
一般来说,使用函数模板会使编译时间显着延长。
一位朋友建议我检查模块(C++20)进行优化。
我认为这根本不会影响编译速度。
我不知道如何测试这个,所以我在这里问。
下面的代码会以某种方式神奇地优化构建过程吗?
定义仍然需要创建和编译,所以不会有任何区别?
数学.xxx:
module;
#include <typeinfo>
export module math;
import <iostream>;
export
template<typename T>
T square(T x) {
std::cout << typeid(T).name() << std::endl;
return x * x;
}
Run Code Online (Sandbox Code Playgroud)
主程序
import math;
void main() {
square(int());
square(double());
}
Run Code Online (Sandbox Code Playgroud)