怎么转std::string
时间: 2023-07-31 07:10:36 浏览: 163
如果您要将char指针或字符数组转换为std::string,可以使用std::string的构造函数。例如,如果您有一个字符数组char arr[],可以使用以下代码将其转换为std::string:
```cpp
char arr[] = "Hello, world!";
std::string str(arr);
```
如果您有一个char指针,可以使用以下代码将其转换为std::string:
```cpp
char* ptr = "Hello, world!";
std::string str(ptr);
```
请注意,在这两种情况下,std::string构造函数会在字符串的结尾自动添加一个空字符,因此您不需要在输入字符串时显式添加它。
相关问题
std::streambuf 转std::string
`std::streambuf` 是 C++ 中的一个缓冲输入输出流对象,它主要用于控制数据流的读取和写入操作。如果你想将 `std::streambuf` 的内容转换成 `std::string`,你可以通过以下几个步骤实现:
1. 首先,确保你有一个指向 `std::streambuf` 实例的指针或者引用。
2. 创建一个临时的 `std::stringstream` 对象,这个流可以接收来自 `std::streambuf` 的输入。
3. 将 `std::streambuf` 的内容连接到 `std::stringstream` 上,通常通过 `rdbuf()` 函数获取其缓冲区并调用 `str()` 或者 `str(std::string())` 来获得字符串表示。
4. 使用 `str()` 获取的字符串就是你需要的。
示例代码如下:
```cpp
#include <sstream>
#include <string>
std::string streambuf_to_string(const std::streambuf& sb) {
std::stringstream ss;
ss.rdbuf(sb.rdbuf());
return ss.str();
}
int main() {
// 假设你有一个名为 buffer 的 std::streambuf 实例
auto buffer = ...;
std::string content = streambuf_to_string(buffer);
// 现在 content 包含了 buffer 中的内容
return 0;
}
```
std::smatch 转std::string
可以使用 std::regex_replace 函数将 std::smatch 转换为 std::string。例如:
std::smatch match;
std::regex_search(input, match, pattern);
std::string result = std::regex_replace(input, pattern, match.str());
其中,input 是输入字符串,pattern 是正则表达式,match.str() 是匹配到的字符串。
阅读全文