我正在尝试使用连接到串行通讯的设备。用于打开通讯端口的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 *以供使用?
问候
您几乎永远不需要vector<char>
,而只需使用:
if(OpenComport( (char*) settings->serveraddr_spad.c_str(), settings->serverbaud_spad))