相比于C#,C++的类型转换更为麻烦。下面列举几种主要的类型转换,当然转换的方法有很多,以下可能是最简单、有效的方式了,以后在工作和学习中再逐渐添加其他的类型转换。
CString转char*
CString file=GetFilePath()+"parameter.txt";
char* pszFileName=(LPSTR)(LPCTSTR)file;
string转CString
string str;
CString ss = str.c_str();
int转CString
CString str;
int num=0;
str.Format(_T("%d"),num);
char*转string:
char* filechar;
string file_str=file_char;
string转char*,const char* :
string file_str;
char* file_char = (char*)file_str.c_str();//转const char* 不要(char *)
int转string:
int Num_int;
std::stringstream ssNum;
std::string strNum;
ssNum<<Num_int;
ssNum>>strNum;
char*与System::String^的相互转换(C++互调c#时用到)
#include "stdafx.h"
using namespace System; //这个命名空间如果缺的话,IntPtr这个无法识别
int main(array<System::String ^> ^args)
{
char* ch1 = "this is chars ";
//将char*转换为System::String^
String^ str1= System::Runtime::InteropServices::Marshal::PtrToStringAnsi((IntPtr)ch1);
//System::String^转换为char*
char* ch2 = (char*)(void*)System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(str1);
Console::WriteLine(str1);
Console::WriteLine(ch2);
Console::ReadLine();
}