c ++ copy string literal(来自C)

Mat*_*ech 0 c c++ char

我想将C字符串保存到C++变量.这应该传递给C-API函数.

该字符串在C-API中定义为

#define  XI_PRM_BINNING_HORIZONTAL_MODE         "binning_horizontal_mode"
Run Code Online (Sandbox Code Playgroud)

我想在交换机中选择字符串

char * binnMode;
...
binnMode = XI_PRM_BINNING_HORIZONTAL_MODE;
Run Code Online (Sandbox Code Playgroud)

但这失败了因为C-literal被定义为char str[](C++ 11)

我想将字符串传递给期望的函数

xiSetParamInt(IN HANDLE hDevice, const char* prm, const int val)
Run Code Online (Sandbox Code Playgroud)

我如何定义binnMode才能使其正常工作?

Lig*_*ica 6

请注意,参数const char*不是char*.

这很方便,因为它也是binnMode需要的.

字符串文字是不可变的,(在C++中)const.你的是一个const char[<length+1>](不知道你在哪里听到它char[]),它很好地腐烂了const char*.

  • *"不知道你在哪里听到它是`char []`"* - 到今天是C语言.但修改它是UB.非常傻,真的. (3认同)