c++ - 如何将 std::string 转换为不同类别的字符串?

标签 c++

我从文件中读取数据,并且想在函数中使用其中的值。这是一个自定义函数,我正在为 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”

最佳答案

您所说的 xrstringconst char * 或 C 样式字符串。

std::string 附带了一个方便的函数,可以将 std::string 转换为 C 风格字符串 - std::string::c_str( )

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

xrstring test_var = std_var.c_str();

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

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

关于c++ - 如何将 std::string 转换为不同类别的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58628349/

相关文章:

具有双重比较的 C++ 奇怪行为

c++ - 如何在模板模板参数中使用默认参数以外的参数进行实例化

c++ - `enable_shared_from_this` 有什么用处?

c++ - ceil 在 vi​​sual c++ 2010 中不包含 <cmath> 的情况下工作

c++ - 我可以在初始化数组时避免 c++11 移动吗?

c++ - weak_ptr C++ 中的比较运算符

c++ - doxygen中的函数类型参数

C++11构造函数继承和无参数构造函数

c++ - 在连接信号/槽中使用 C++ 关键字

c++ - 如何创建一个可以向其传递函数或仿函数的方法?