将std :: string转换为char *的问题

问题描述 投票:0回答:1

我正在尝试使用连接到串行通讯的设备。用于打开通讯端口的API类似于此

int OpenComport(char * comport, int baudrate);

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

//// my config file
#define COMPORT "/dev/ttyUSB0"

//// inmy settings file 
settings->serveraddr_spad = COMPORT;

考虑到我已经正确设置了所有东西,我开始将字符串转换为const char,然后转换为vector(请参见下文)。

//// 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数组的这种用法时,它起作用(下面)

char portchar[13] = "/dev/ttyUSB0";

if(OpenComport(  &portchar[0], settings->serverbaud_spad))
{
   // do my action
}

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

问候

c++ string char
1个回答
0
投票

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

if(OpenComport( (char*) settings->serveraddr_spad.c_str(), settings->serverbaud_spad))
© www.soinside.com 2019 - 2024. All rights reserved.