ostringstream转为char*
时间: 2023-08-03 20:05:52 浏览: 150
可以通过ostringstream的str()函数获取其内部的string,然后通过string的c_str()函数获取其对应的char*,示例如下:
```c++
#include <iostream>
#include <sstream>
int main() {
std::ostringstream oss;
oss << "Hello, world!";
std::string str = oss.str();
const char* char_ptr = str.c_str();
std::cout << char_ptr << std::endl;
return 0;
}
```
输出结果为:
```
Hello, world!
```
相关问题
c++ 将float转为字符串
在C++中,有多种方法可以将float类型转换为string类型。以下是其中的三种方法:
方法一:
```c++
#include <sstream>
std::string Convert(float Num) {
std::ostringstream oss;
oss << Num;
std::string str(oss.str());
return str;
}
```
方法二:
```c++
#include <sstream>
int main(){
float num = 10.11;
std::string data = std::to_string(num);
printf("data: %s\n", data.c_str());
return 0;
}
```
方法三:
```c++
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <iostream>
using namespace std;
string FloatToString(float f) {
char buf[32];
sprintf(buf, "%.2f", f);
return string(buf);
}
```
以上三种方法都可以将float类型转换为string类型,具体使用哪种方法取决于你的需求和个人喜好。
将osgimage转为二进制流的格式
将osgImage转为二进制流格式可以按照以下步骤进行:
1. 使用osgDB库中的readImage函数读取osgImage文件,并将其存储到osg::Image对象中。
2. 使用osgDB库中的writeImage函数将osg::Image对象写入一个osgDB::Output对象中。
3. 将osgDB::Output对象中的数据转换为二进制流格式,可以使用osgDB::Output::getWriteStream()函数获取一个std::ostream对象,然后将其中的数据转换为二进制流格式即可。
以下是一个简单的示例代码,用于将osgImage转换为二进制流格式:
```c++
#include <osgDB/ReadFile>
#include <osgDB/WriteFile>
int main(int argc, char** argv)
{
// 读取osgImage文件
osg::ref_ptr<osg::Image> image = osgDB::readImageFile("myImage.png");
// 将osg::Image对象写入osgDB::Output对象中
osg::ref_ptr<osgDB::Output> output = new osgDB::Output();
osgDB::writeImage(*image, *output);
// 将osgDB::Output对象中的数据转换为二进制流格式
std::ostringstream oss;
output->getWriteStream()->seekg(0, std::ios::beg);
oss << output->getWriteStream()->rdbuf();
// 输出二进制流格式数据的长度
std::cout << "Binary stream length: " << oss.str().size() << std::endl;
return 0;
}
```
在上述示例代码中,我们首先使用osgDB库中的readImage函数读取一个osgImage文件,然后将其写入一个osgDB::Output对象中。最后,使用std::ostringstream对象将osgDB::Output对象中的数据转换为二进制流格式,并输出其长度。
阅读全文