[英]How to convert std::string to std::vector<std::byte> in C++17?
如何在C ++ 17中將std::string
轉換為std::vector<std::byte>
? 編輯:由於要盡可能多地檢索數據,所以我正在填充異步緩沖區。 因此,我在緩沖區上使用了std::vector<std::byte>
,我想轉換字符串以填充它。
std::string gpsValue;
gpsValue = "time[.........";
std::vector<std::byte> gpsValueArray(gpsValue.size() + 1);
std::copy(gpsValue.begin(), gpsValue.end(), gpsValueArray.begin());
但我收到此錯誤:
error: cannot convert ‘char’ to ‘std::byte’ in assignment
*__result = *__first;
~~~~~~~~~~^~~~~~~~~~
使用std::transform
應該可以:
#include <algorithm>
#include <cstddef>
#include <iostream>
#include <vector>
int main()
{
std::string gpsValue;
gpsValue = "time[.........";
std::vector<std::byte> gpsValueArray(gpsValue.size() + 1);
std::transform(gpsValue.begin(), gpsValue.end(), gpsValueArray.begin(),
[] (char c) { return std::byte(c); });
for (std::byte b : gpsValueArray)
{
std::cout << int(b) << std::endl;
}
return 0;
}
輸出:
116
105
109
101
91
46
46
46
46
46
46
46
46
46
0
std::byte
不應該是通用的8位整數,而只能代表原始二進制數據的blob。 因此,它(正確地)不支持char
賦值。
您可以改用std::vector<char>
-但這基本上就是std::string
。
如果您確實要將字符串轉換為std::byte
實例的向量,請考慮使用std::transform
或range- for
循環執行轉換。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.