CString与char*转换问题(希望有人能解答下)
老掉牙的问题,但是最近在网上看了许多资料,在环境里实现结果却不如我意。
1 CString cstr("hello world!");
2 char text[100];
3 strncpy(text,(LPCTSTR)cstr,sizeof(text));
2 char text[100];
3 strncpy(text,(LPCTSTR)cstr,sizeof(text));
但是在VS2005中还是提示如下的错误:
这个问题希望有人能解答下!
我自己琢磨出了这种转换形式:
代码
1 CString cstr("helloworld");
2 char* pChar = (char *)(LPCTSTR)cstr;
3 int l = strFileName.GetLength();
4 char* pCharArray = new char[l];
5 for (int i = 0; i < l ; i++)
6 {
7 pCharArray[i] = *pChar;
8 pChar+=2;
9 }
10 pCharArray[l] = '\0';
11
12 //...使用pCharArray
13
14 delete[] pCharArray;
15 pCharArray = NULL;
2 char* pChar = (char *)(LPCTSTR)cstr;
3 int l = strFileName.GetLength();
4 char* pCharArray = new char[l];
5 for (int i = 0; i < l ; i++)
6 {
7 pCharArray[i] = *pChar;
8 pChar+=2;
9 }
10 pCharArray[l] = '\0';
11
12 //...使用pCharArray
13
14 delete[] pCharArray;
15 pCharArray = NULL;
其中pChar指针之所以每次循环移两个,是由于CString中每个字符后面都有一个'0'字符作为分割。(纯属自己调试使用)
这里面的问题是不能转换中文。