将std::string转换为char*时出现问题

Problem with converting std::string to char*

本文关键字:问题 std string 转换 char      更新时间:2024-05-09

我正在尝试使用连接到串行通信的设备。一个API用来打开通信端口,就像这个

int OpenComport(char * comport, int baudrate);

因此,最初,我在配置文件中的某个位置定义了组件

//// my config file
#define COMPORT "/dev/ttyUSB0"
//// inmy settings file 
settings->serveraddr_spad = COMPORT;

考虑到我已经正确设置了所有内容,我开始将字符串转换为const-char,然后转换为向量(见下文(。

//// in my usage file
std::vector<char> portchar((settings->serveraddr_spad).c_str(), 
(settings->serveraddr_spad).c_str() +
(settings->serveraddr_spad).size() + 1);
if(OpenComport(  &portchar[0], settings->serverbaud_spad))
{
// do my action
}

所有这些似乎都与编译器相一致,并且运行平稳。然而,在执行时,我发现端口没有打开。

相反,当我切换到这种声明char数组outfront的用法时,它可以工作(下面(

char portchar[13] = "/dev/ttyUSB0";
if(OpenComport( portchar, settings->serverbaud_spad))
{
// do my action
}

我的问题是如何将std::string转换为char*以供使用?

问候

您几乎不需要vector<char>,只需使用:

if(OpenComport( (char*) settings->serveraddr_spad.c_str(), settings->serverbaud_spad))

您可以使用std::string::data()。与c_str()相反,它为非常数字符串返回一个char *。由于C++11是garanted,所以返回的数组将以null终止。

if(OpenComport(settings->serveraddr_spad.data(), settings->serverbaud_spad))
{
// do my action
}