std::string format
时间: 2023-09-10 13:06:13 浏览: 141
您好!如果您想要格式化字符串,可以使用C++中的`std::string`类以及相关的格式化函数。其中一个常用的函数是`sprintf`,它可以将格式化的字符串写入到`std::string`对象中。以下是一个示例代码:
```cpp
#include <iostream>
#include <string>
std::string format(const std::string& fmt, ...)
{
// 使用可变参数列表
va_list args;
va_start(args, fmt);
// 获取格式化后的字符串长度
int size = vsnprintf(nullptr, 0, fmt.c_str(), args);
va_end(args);
// 创建足够大的字符串缓冲区
std::string result(size + 1, '\0');
// 再次格式化字符串,并将结果写入缓冲区
va_start(args, fmt);
vsnprintf(&result[0], size + 1, fmt.c_str(), args);
va_end(args);
return result;
}
int main()
{
std::string formatted = format("Hello, %s! You are %d years old.", "John", 25);
std::cout << formatted << std::endl;
return 0;
}
```
在上述示例中,我们定义了一个名为`format`的函数,它接受一个格式字符串和可变参数列表。函数内部使用`vsnprintf`函数来获取格式化后的字符串长度,并创建足够大的字符串缓冲区。然后再次使用`vsnprintf`函数将格式化后的字符串写入缓冲区,并最终返回该字符串。
请注意,这只是一种实现方式,您也可以根据自己的需求选择其他的字符串格式化方法。希望能对您有所帮助!如果您有任何其他问题,请随时提问。
阅读全文