C++常用类型转换(在Unicode和MBCS之间相互转换函数)

简介: C++常用类型转换(在Unicode和MBCS之间相互转换函数)

1、C++在Unicode和MBCS之间相互转换函数

BOOL MByteToWChar(LPCSTR lpcszStr, LPWSTR lpwszStr, DWORD dwSize)
{
        DWORD dwMinSize;
        dwMinSize = MultiByteToWideChar(CP_ACP, 0, lpcszStr, -1, NULL, 0);
        if (dwSize < dwMinSize)
        {
                return FALSE;
        }
        MultiByteToWideChar(CP_ACP, 0, lpcszStr, -1, lpwszStr, dwMinSize);
        return TRUE;
}
BOOL WCharToMByte(LPCWSTR lpcwszStr, LPSTR lpszStr, DWORD dwSize)
{
        DWORD dwMinSize;
        dwMinSize = WideCharToMultiByte(CP_OEMCP, NULL, lpcwszStr, -1, NULL, 0, NULL, FALSE);
        if (dwSize < dwMinSize)
        {
                return FALSE;
        }
        WideCharToMultiByte(CP_OEMCP, NULL, lpcwszStr, -1, lpszStr, dwSize, NULL, FALSE);
        return TRUE;
}


使用方法:

wchar_t wText[255] = {L"你好"};

char sText[255]= {0};

WCharToMByte(wText,sText,sizeof(sText)/sizeof(sText[0]));//宽字节转多字节

MByteToWChar(sText,wText,sizeof(wText)/sizeof(wText[0]));//多字节转宽字节


2、std:string的格式化


#ifndef NOT_SAVE_IMAGE
  std::string name;
  std::stringstream ss1;
  ss1.str("");
  ss1 << "imageSrc";
  ss1 << index;
  ss1 << ".jpg";
  name = ss1.str();
  _saveImageMat(name, imageSrc);
  ss1.str("");
  ss1 << "imageDst";
  ss1 << index;
  ss1 << ".jpg";
  name = ss1.str();
  _saveImageMat(name, imageDst);
#endif
void CGPUTest::_saveImageMat(std::string path, const cv::Mat& img)
{
  //根据扩展名来决定储存jpg还是bmp
  if (path.find("jpg") != path.npos)//找到了jpg,一个特别的标志c++中用npos表示
  {
  vector<int> compression_params;
  compression_params.push_back(cv::IMWRITE_JPEG_QUALITY);//选择jpeg
  compression_params.push_back(100);//在这个填入你要的图片质量,默认值是95,100代表满分
  cv::imwrite(path, img, compression_params);//根据路径,保存为jpg格式
  }
  else
  {
  cv::imwrite(path, img);//根据路径,保存为bmpg格式
  }
}


相关文章
|
4天前
|
存储 安全 编译器
C++:现代类型转换
C++:现代类型转换
24 5
|
4天前
|
C++ 编译器 程序员
C++ 从零基础到入门(3)—— 函数基础知识
C++ 从零基础到入门(3)—— 函数基础知识
|
4天前
|
自然语言处理 编译器 C语言
【C++】C++ 入门 — 命名空间,输入输出,函数新特性
本文章是我对C++学习的开始,很荣幸与大家一同进步。 首先我先介绍一下C++,C++是上个世纪为了解决软件危机所创立 的一项面向对象的编程语言(OOP思想)。
36 1
【C++】C++ 入门 — 命名空间,输入输出,函数新特性
|
4天前
|
存储 算法 对象存储
【C++入门到精通】function包装器 | bind() 函数 C++11 [ C++入门 ]
【C++入门到精通】function包装器 | bind() 函数 C++11 [ C++入门 ]
15 1
|
4天前
|
存储 算法 数据安全/隐私保护
【C++入门到精通】 哈希结构 | 哈希冲突 | 哈希函数 | 闭散列 | 开散列 [ C++入门 ]
【C++入门到精通】 哈希结构 | 哈希冲突 | 哈希函数 | 闭散列 | 开散列 [ C++入门 ]
7 0
|
4天前
|
存储 自然语言处理 C++
刷题用到的非常有用的函数c++(持续更新)
刷题用到的非常有用的函数c++(持续更新)
19 1
|
4天前
|
存储 编译器 C++
【C++】内存管理和模板基础(new、delete、类及函数模板)
【C++】内存管理和模板基础(new、delete、类及函数模板)
25 1
|
4天前
|
编译器 C++
【C++】类与对象(static、explicit、友元、隐式类型转换、内部类、匿名对象)
【C++】类与对象(static、explicit、友元、隐式类型转换、内部类、匿名对象)
9 2
|
4天前
|
存储 编译器 C语言
【C++】C++中规范[ 类型转换标准 ] 的四种形式
【C++】C++中规范[ 类型转换标准 ] 的四种形式
|
4天前
|
存储 C++
c/c++宏定义(函数)
c/c++宏定义(函数)