首页 > 解决方案 > 如何将 std::string 转换为不同类别的字符串?

问题描述

我从文件中读取数据,我想在函数中使用它的值。这是一个自定义函数,我正在为 Creo Parametric 编写 TOOLKIT。

好吧,该函数需要一个“xrstring”,但我有一个 std::string。

如何将一个转换为另一个?

我试过写 xrstring test_var = xrstring(std_var);

它不起作用。

//definition of xrstring

typedef const char          *xrstring;
#define xstringuninit   ((xrstring) 2)
#define xstringnil      ((const char *) 1)
#define xwstringnil     ((const wchar_t *) 1)
#define xwstringuninit     ((const wchar_t *) 2)

//definition of pfcCreateStringParamValue

pfcParamValue_ptr        pfcCreateStringParamValue (xrstring Value);

错误 C2664:“pfcParamValue_ptr pfcCreateStringParamValue(xrstring)”:无法将参数 1 从“std::string”转换为“xrstring”

标签: c++

解决方案


xrstring您所说的 is或const char *C 风格的字符串。

std::string带有一个方便的函数来将 a 转换std::string为 C 风格的字符串 -std::string::c_str()

因此,这是做你想做的事情的正确方法:

xrstring test_var = std_var.c_str();

此外,不存在直接const char *投射std::string。标准库字符串不仅仅是指向字符的指针。它还包含其他信息,例如字符串长度。

如果您想进行类似的转换,我个人建议您将其声明xstring为一个类xrstring test_var = xrstring(std_var);,并为转换创建一个合适的构造函数。


推荐阅读