`
lindexi-gd
  • 浏览: 139656 次
社区版块
存档分类
最新评论

C++宽字符串转字符串

 
阅读更多

这文章是更改别人代码

#include <string>
#include <iostream>
#include <stdlib.h>
#include <windows.h>
#include <locale>
#include <locale.h>
#define _A_WIN //如果你是windows
using namespace std;
//把字符串转换成宽字符串
wstring string_wstring(string sToMatch)
{
#ifdef _A_WIN
    int iWLen = MultiByteToWideChar( CP_ACP, 0, sToMatch.c_str(), sToMatch.size(), 0, 0 ); // 计算转换后宽字符串的长度。(不包含字符串结束符)
    wchar_t *lpwsz = new wchar_t [iWLen + 1];
    MultiByteToWideChar( CP_ACP, 0, sToMatch.c_str(), sToMatch.size(), lpwsz, iWLen ); // 正式转换。
    lpwsz[iWLen] = L'\0';
    wstring wsToMatch(lpwsz);
    delete []lpwsz;
    return wsToMatch;
#elifdef _A_LINUX
    setlocale( LC_CTYPE, "" ); // 很重要,没有这一句,转换会失败。
    int iWLen = mbstowcs( NULL, sToMatch.c_str(), sToMatch.length() ); // 计算转换后宽字符串的长度。(不包含字符串结束符)
    wchar_t *lpwsz = new wchar_t[iWLen + 1];
    int i = mbstowcs( lpwsz, sToMatch.c_str(), sToMatch.length() ); // 转换。(转换后的字符串有结束符)
    wstring wsToMatch(lpwsz);
    delete []lpwsz;
    return wsToMatch;
#endif
    //return wsToMatch;
    return NULL;
}
//把宽字符串转换成字符串,输出使用
string wstring_string(wstring sToMatch)
{
#ifdef _A_WIN
    string sResult;
    int iLen = WideCharToMultiByte( CP_ACP, NULL, sToMatch.c_str(), -1, NULL, 0, NULL, FALSE ); // 计算转换后字符串的长度。(包含字符串结束符)
    char *lpsz = new char[iLen];
    WideCharToMultiByte( CP_OEMCP, NULL, sToMatch.c_str(), -1, lpsz, iLen, NULL, FALSE); // 正式转换。
    sResult.assign( lpsz, iLen - 1 ); // 对string对象进行赋值。
    delete []lpsz;
    return sResult;
#elifdef _A_LINUX
    int iLen = wcstombs( NULL, sToMatch.c_str(), 0 ); // 计算转换后字符串的长度。(不包含字符串结束符)
    char *lpsz = new char[iLen + 1];
    int i = wcstombs( lpsz, sToMatch.c_str(), iLen ); // 转换。(没有结束符)
    lpsz[iLen] = '\0';
    string sResult(lpsz);
    delete []lpsz;
    return sResult;
#endif
    //return sResult;
    return NULL;
}

更改

wstring string_wstring(string sToMatch):return wsToMatch;
string wstring_string(wstring sToMatch):return sResult;
wstring string_wstring(string sToMatch):lpwsz[iWLen] = L'\0';
string wstring_string(wstring sToMatch):lpsz[iLen] = '\0';
#elif:#elifdef;

参考:http://blog.csdn.net/stephen_yin/article/details/6292728

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
分享到:
评论

相关推荐

    详解C++中十六进制字符串转数字(数值)

    详解C++中十六进制字符串转数字(数值) 主要有两个方法,其实都是对现有函数的使用:  方法1: sscanf()  函数名: sscanf 功 能: 从字符串格式化输入 用 法: int sscanf(char *string, char *format[,...

    c/c++复制字符串到剪粘板中

    C/C++复制字符串到剪粘板中 C/C++复制字符串到剪粘板中是指将字符串复制到剪粘板中,以便在其他应用程序中使用。这可以通过Win32 API和MFC来实现。 在Win32 API中,可以使用OpenClipboard、GetClipboardData、...

    C++常用字符串分割方法实例汇总

    本文实例汇总了C++常用字符串分割方法,分享给大家供大家参考。具体分析如下: 我们在编程的时候经常会碰到字符串分割的问题,这里总结下,也方便我们以后查询使用。 一、用strtok函数进行字符串分割 原型: char *...

    (资料大全加程序)C++ 字符串之间的相互转化 宽字符与多字符集(LPTSTR、LPCSTR、LPCTSTR、LPSTR)

    在C++编程中,字符和字符串的处理是至关重要的,特别是在处理不同的字符集时,如宽字符和多字符集。标题和描述中提到的关键概念包括LPTSTR、LPCSTR、LPCTSTR和LPSTR,这些都是在Windows API中常见的字符串类型指针。...

    用C++实现字符串倒序

    本篇将详细探讨如何使用C++实现字符串的倒序,以及相关的C++字符串操作知识。 首先,我们要理解C++中字符串的基本概念。在C++中,字符串通常由字符数组表示,可以使用`char`类型的数组或`std::string`类来处理。`...

    C/C++字符串,字符转数字,数字转字符

    C/C++语言本身并没有专门的字符串变量类型,而是使用字符数组来存放字符串,其中字符串的结束符是“\0”(空字符)。掌握字符与数字之间的转换对于进行有效编程至关重要,尤其在处理用户输入、数据输出以及与其他...

    03 C#与C++dll互相传递字符串.rar

    本示例探讨的是如何在C#环境下调用C++编写的动态链接库(DLL),并实现两者之间字符串参数的有效传递。下面我们将详细讨论这个过程。 首先,C#和C++之间的互操作性是通过.NET Framework的Platform Invoke (P/Invoke...

    C++中英混合字符串截取

    在C++编程中,处理字符串是一项常见的任务,特别是在游戏开发客户端和服务器端的场景中。题目中的问题聚焦于如何正确地截取一个中英混合的字符串,确保在截取过程中不会将汉字字符截断。这个问题涉及到字符编码、...

    C++字符串中检测特定的字符串

    在C++编程中,处理字符串是一项常见的任务,尤其是在开发涉及文本处理的应用程序时。C++提供了多种方法来处理和操作字符串,包括标准库中的`std::...理解并熟练掌握这两种方法,将使你在处理C++字符串时更加得心应手。

    C#将字符串数组传递给C++ DLL.rar

    C#中的字符串是引用类型,由.NET框架管理,而C++中的字符串可以是字符数组(char*)或宽字符数组(wchar_t*)。因此,传递字符串数组时,需要进行适当的类型转换。 1. **定义C++ DLL接口**: 在C++ DLL中,我们...

    C++二维码生成库,直接调用即可,支持中文和各种各样字符串转二维码

    字符串处理包括校验、编码转换和错误检查等步骤,确保字符串能正确转化为二维码。 5. **图像处理**: 生成的二维码是一个二维像素阵列,需要转换为图像格式,如PNG或JPEG,以便在屏幕上显示或本地保存。Qt库的`...

    C++宽字符用法 .

    - `wcswcs()`/`wcsstr()`:在一个宽字符串中查找另一个宽字符串。 - `wcscspn()`/`wcsspn()`:计算宽字符串前缀中不匹配或匹配指定字符集的长度。 - `wcscpy()`/`wcsncpy()`:复制宽字符串。 以上函数的使用可以...

    详解C++ string常用截取字符串方法

    在C++编程中,`std::string`是一个非常重要的数据类型,用于表示和操作字符串。本文将详细解析两种常用的C++ `std::string`截取字符串的方法:`find`和`find_last_of`,以及如何结合使用它们来满足各种字符串处理...

    C++将文本字符串转换成BMP图片

    本篇文章将深入探讨如何使用C++编程语言将文本字符串转换成BMP(Bitmap)图片。 首先,我们需要了解BMP文件格式。BMP是Windows操作系统中常见的位图文件格式,它存储的是未经压缩的像素数据,包括图像宽度、高度、...

    C++宽字符处理对照

    - **wcsstr()**:在一个宽字符字符串中查找另一个宽字符字符串的位置。 - **wcslen()**:计算宽字符字符串的长度。 - **wcscpy()**:复制宽字符字符串。 - **wcsncpy()**:复制宽字符字符串,可指定最大复制长度。 -...

    各种 C++ 字符串类型转换

    本文将详细介绍几种常用的C++字符串类型(`char *`、`wchar_t*`、`_bstr_t`、`CComBSTR`、`CString`、`basic_string` 和 `System.String`)之间的转换方法,并通过示例代码加以解释。 #### 1. `char *` 类型转换 `...

    纯C++ 字符串处理函数大全源码

    总的来说,这个"纯C++ 字符串处理函数大全源码"为C++开发者提供了一套实用的字符串操作工具,涵盖了字符串的分割、修剪、替换、合并等多种常见操作。通过引入这个库,开发者可以在自己的项目中快速高效地处理字符串...

    用c++比较两个字符串的大小

    ### 使用C++比较两个字符串的大小 在C++编程语言中,比较字符串是常见的操作之一。本篇文章将基于提供的代码示例,详细解释如何通过指针和`for`循环来比较两个字符串的大小。 #### 代码解读 首先,让我们详细了解...

    c++字符串加密解密

    在C++编程中,字符串加密和解密是信息安全领域中的重要技术,主要用于保护数据的隐私和安全性。本项目涉及的是DES(Data Encryption Standard)加密算法的实现,这是一种经典的对称加密算法,广泛应用于数据的加密...

    Visual C++ 字符串

    在编程领域,字符串处理是日常开发中的重要环节,尤其是在C++这种高级编程语言中。Visual C++作为微软提供的一个强大的C++开发环境,为开发者提供了丰富的字符串操作支持。本篇文章将深入探讨Visual C++中字符串的...

Global site tag (gtag.js) - Google Analytics