Ale*_*ker 6 c++ ostringstream uint8t
我有一个 uint8_t 类型的数组。我想创建一个字符串来连接数组的每个元素。这是我使用 ostringstream 的尝试,但之后字符串似乎为空。
std::string key = "";
std::ostringstream convert;
for (int a = 0; a < key_size_; a++) {
convert << key_arr[a]
key.append(convert.str());
}
cout << key << endl;
Run Code Online (Sandbox Code Playgroud)
尝试这个:
std::ostringstream convert;
for (int a = 0; a < key_size_; a++) {
convert << (int)key[a];
}
std::string key_string = convert.str();
std::cout << key_string << std::endl;
Run Code Online (Sandbox Code Playgroud)
这个ostringstream类就像一个字符串生成器。您可以向其附加值,完成后您可以调用它的.str()方法来获取std::string包含您放入其中的所有内容的 。
你需要投 uint8_t值int添加到之前将它们转换为 ,ostringstream因为如果不这样做,它会将它们视为字符。另一方面,如果它们确实代表字符,则需要删除(int)演员表以查看实际字符。
编辑:如果你的数组包含 0x1F 0x1F 0x1F 并且你希望你的字符串是 1F1F1F,你可以使用std::uppercase和std::hex操纵器,如下所示:
std::ostringstream convert;
for (int a = 0; a < key_size_; a++) {
convert << std::uppercase << std::hex << (int)key[a];
}
Run Code Online (Sandbox Code Playgroud)
如果你想回到十进制和小写,你需要使用std::nouppercase和std::dec。
| 归档时间: |
|
| 查看次数: |
19229 次 |
| 最近记录: |