在VC 的编程中,经常会用到各种类型的转换,在MFC中textbox等控件得到的返回类型是System::String *,而写入的文件要求是 const char *类型的,下面介绍一些转换的方法:
string 转 CString    CString.format("%s", string.c_str());

char* 转 CString    CString.format("%s", char*);

char* 转 string       string change=new string s(char *);

string 转 char *     char *p = string.c_str();

CString转std::string
CString str = dlg.GetPathName();
                           setlocale(LC_ALL, "chs");
                          char *p = new char[256];
                        wcstombs( p, str, 256 );
                         m_fileName = p;

int 转CString而将数字转换为CString变量,

可以使用CString的Format函数
                      CString s;  
                      int i = 64;  
                     s.Format("%d", i)  
     Format函数的功能很强,值得你研究一下。

CString TO char *

要把CString转成char *,用操作符(LPCSTR

CString转换 char[100]

char a[100];  
      CString str("aaaaaa");  
     strncpy(a,(LPCTSTR)str,sizeof(a));
CString类型的转换成int

CString aaa = "16" ;
       int int_chage = atoi((lpcstr)aaa) ;

char* 在装int

#include <stdlib.h>
          int atoi(const char *nptr);
           long atol(const char *nptr);
          long long atoll(const char *nptr);
          long long atoq(const char *nptr);

System::String 转化成 char *类型(网上提供有许多种类)

1 MSDN上的

#include < stdio.h >
#include < stdlib.h >
#include < vcclr.h >   
using namespace System;   
int main() {
String ^str = "Hello";   
        pin_ptr<const wchar_t> wch = PtrToStringChars(str);
printf_s("%S\n", wch);   
        size_t convertedChars = 0;
size_t sizeInBytes = ((str->Length 1) * 2);
errno_t err = 0;
char     *ch = (char *)malloc(sizeInBytes);   
   err= wcstombs_s(&convertedChars, ch, sizeInBytes, wch,sizeInBytes);
if (err != 0)    printf_s("wcstombs_s failed!\n");   
          printf_s("%s\n", ch);
}

2 网上找的

PtrToStringChars 指定了一个指向实际 String 对象的内部指针。如果将此指针传递给非托管函数调用,则必须先锁定该指针,以确保在进行异步垃圾回收过程中对象不会移动:

//#include <vcclr.h>
System::String * str = S"Hello world\n";
const __wchar_t __pin * str1 = PtrToStringChars(str);
wprintf(str1);
3 感觉这种最好用的

StringToHGlobalAnsi 将托管 String 对象的内容复制到本机堆,

然后动态地将它转换为美国国家标准学会 (ANSI) 格式。

此方法将分配所需的本机堆内存:

using namespace System;

using namespace System::Runtime::InteropServices;
System::String * str = S"Hello world\n";
char* str2 = (char*)(void*)Marshal::StringToHGlobalAnsi(str);
printf(str2);

最新文章

  1. nmea协议
  2. JavaWeb学习之什么JSP、JSP是如何工作的、JSP语言(各种指令和九大内置对象)、EL表达式简单使用(5)
  3. WordPress 性能检测与速度优化
  4. HDU4864:Task(贪心)
  5. APP 上传之后出现&quot;invalid binary&quot; 问题解决汇总
  6. vs2010创建和使用动态链接库(dll)
  7. MySQL分类表设计--根据ID删除全部子类
  8. Java学习笔记20(String类应用、StringBuffer类、StringBuilder类)
  9. 关于Struts传递json给easyui的随笔
  10. 【Machine Translation】CMU的NMT教程论文:最全面的神经机器翻译学习教程
  11. 消除 ASP.NET Core 告警 &quot;No XML encryptor configured. Key may be persisted to storage in unencrypted form&quot;
  12. python从零开始 -- 第1篇之环境搭建
  13. MongoDB启动文件配置参数详解
  14. 配置阿里云docker镜像地址
  15. CSS 分类 选择器
  16. javaagent
  17. SWIFT解析天气JSON格式
  18. CVE-2017-11882钓鱼样本构造
  19. 2017-2018 ACM-ICPC Southeastern European Regional Programming Contest (SEERC 2017) Solution
  20. MUI框架-13-使用百度地图 API(图文教程)

热门文章

  1. 如何将Python对象保存在本地文件中?
  2. (手写)mybatis 核心配置文件和接口不在同一包下的解决方案
  3. luogu4173 残缺的字符串
  4. 让boostrap的图片轮播支持滑动效果
  5. LibreOJ2095 - 「CQOI2015」选数
  6. python ATM大作业之alex思路
  7. bzoj 2794 [Poi2012]Cloakroom 离线+背包
  8. YY的GCD(bzoj 2820)
  9. 我要好offer之 链表大总结
  10. javaweb学习总结(九)—— 通过Servlet生成验证码图片(转)