在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(); spa
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變量,code
能夠使用CString的Format函數
CString s;
int i = 64;
s.Format("%d", i)
Format函數的功能很強,值得你研究一下。 orm
CString TO char * 對象
要把CString轉成char *,用操做符(LPCSTR內存
CString轉換 char[100] string
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);