首页 > 解决方案 > 将 std::string 转换为 char* 的问题

问题描述

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

int OpenComport(char * comport, int baudrate);

所以最初,我在我的配置文件中的某处定义了 comport

//// 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 数组的用法时,它可以工作(下)

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

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

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

问候

标签: c++stringchar

解决方案


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

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

推荐阅读