std::vector<char*> 拼接成string
时间: 2023-12-26 21:05:42 浏览: 85
可以使用`std::string`的构造函数或者`operator+=`操作符将`std::vector<char*>`拼接成一个字符串。
方法1:使用`std::string`的构造函数
```cpp
#include <vector>
#include <string>
std::vector<char*> vec = { "hello", ",", "world", "!" };
std::string str(vec[0]);
for (int i = 1; i < vec.size(); ++i) {
str += std::string(vec[i]);
}
```
方法2:使用`operator+=`操作符
```cpp
#include <vector>
#include <string>
std::vector<char*> vec = { "hello", ",", "world", "!" };
std::string str;
for (auto s : vec) {
str += std::string(s);
}
```
需要注意的是,`std::vector<char*>`存储的是C风格字符串,需要将其转换为`std::string`类型才能进行字符串拼接。
相关问题
std::string和std::vector<char>有什么区别
`std::string` 和 `std::vector<char>` 是 C++准库中用于存储字符数据的两种不同的容器类型。
1. `std::string`:
- `std::string` 是一个字符串容器类,用于存储和操作字符序列。
- 它是基于动态数组实现的,可以自动调整大小以容纳任意长度的字符串。
- `std::string` 提供了许多用于操作字符串的成员函数,例如拼接、查找、替换等。
- 它重载了许多操作符,使得对字符串进行操作更加方便。
- `std::string` 内部使用了空字符('\0')作为字符串的结束标志。
2. `std::vector<char>`:
- `std::vector<char>` 是一个动态数组容器,用于存储字符类型的数据。
- 它可以存储任意数量的字符,并根据需要自动调整大小。
- `std::vector<char>` 提供了许多用于操作数组的成员函数,例如插入、删除、遍历等。
- 它没有字符串特定的操作函数,因为它只是一个通用的数组容器。
因此,`std::string` 更适合存储和操作字符串数据,而 `std::vector<char>` 更适合存储和操作一般的字符数据(不一定是以空字符结尾的字符串)。
需要根据具体的需求来选择使用哪种容器类型。如果你需要存储和操作字符串数据,通常会选择使用 `std::string`;如果你需要存储和操作一般的字符数据,可以使用 `std::vector<char>`。
希望这个解答对你有帮助!如果你还有其他问题,请随时提问。
c++ std::vector<uint8_t> AA = {0x11, 0x22, 0x33,};不使用std::stringstream的方式,将AA内容输出一个是字符串“0x11,0x22,0x33”
可以使用循环遍历 `AA` 中的元素,将其转换成字符串后拼接起来,最后输出即可。以下是示例代码:
```cpp
#include <iostream>
#include <vector>
#include <cstdint>
#include <string>
int main() {
std::vector<uint8_t> AA = {0x11, 0x22, 0x33};
std::string s;
for (auto it = AA.begin(); it != AA.end(); ++it) {
char buf[5];
sprintf(buf, "0x%02x", static_cast<int>(*it));
s += buf;
if (it != AA.end() - 1) {
s += ",";
}
}
std::cout << s << std::endl; // 输出:0x11,0x22,0x33
return 0;
}
```
代码中使用了 `sprintf` 函数来将数字转换成字符串,`"0x%02x"` 是指定输出的数字以十六进制形式显示,且宽度为2位,不足的前面补0。