将std::string转换为char*时出现问题
Problem with converting std::string to char*
我正在尝试使用连接到串行通信的设备。一个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
}
相关文章:
- 输入std::数组时出现问题
- 使用自定义比较函数使用std::sort()对矢量字符串进行排序时出现问题
- 使用运算符 [] 引用 std::vector 上最后一个元素时出现问题<>
- GCC 问题与 static_cast<std::u16string>
- C++ std::function 对于类 exept 的所有实例都是空的(只有 Visual2019 编译器问题)
- 在 std::tuple 上使用 std::variant 的问题
- std::max() 函数与定点实现的比较中的问题
- 使用 CImg 库的 std::min 和 std::max 的编译问题
- 如何在 cpp 中使用 std::enable_if 从模板中处理此类问题
- 关于 std::bitset 构造函数的几个问题?
- 'std::filesystem::d irectory_iterator' 编译器问题
- C++ 中 std::vector 的内存问题
- 我有一个关于C++提升的问题:: asio 和 std :: 异步
- std::p 设置或多组的修订问题
- 没有'str'成员在 GCC 和 Clang 'std::basic_ostream<char>',但 MSVC 没有问题
- 问题 (std::bad_alloc) 通过 QThread 中的 QSqlQuery 将大图像(约 36 MB)保存到
- 对齐C++字符串类型问题 std::字符串到 TStr
- 此C 异常语法有什么问题(std :: runtime_error)
- 设计问题:std::map的线程安全性
- 矢量问题 (std::out_of_range)