CString 和 char* 的区别
#include <afx.h>
#include <stdio.h>
int main()
{
char *s1 = "2o3i4jiojrewjeroiksopf";
for(int i1=0;s1[i1]!=0;i1++)
printf("%c",s1[i1]);
printf("\n");
return 0;
}
使用以上代码时一切正常(编译欲行也正常)
#include <afx.h>
#include <stdio.h>
int main()
{
char *s1 = "2o3i4jiojrewjeroiksopf";
for(int i1=0;s1[i1]!=0;i1++)
printf("%c",s1[i1]);
printf("\n");
CString s2 = "2o3i4jiojrewjeroiksopf";
for(int i2=0;s2[i2]!=0;i2++)
printf("%c",s2[i2]);
printf("\n");
return 0;
}
但是使用上面的代码时编译也是 0错误,0警告
而运行时出现错误(如附图)显然 CString 和 char* 存在很明显的区别,但是现在还没有搞清楚,希望大家一起讨论下
#include <afx.h>
#include <stdio.h>
int main()
{
char *s1 = "2o3i4jiojrewjeroiksopf";
for(int i1=0;s1[i1]!=0;i1++)
printf("%c",s1[i1]);
printf("\n");
return 0;
}
使用以上代码时一切正常(编译欲行也正常)
#include <afx.h>
#include <stdio.h>
int main()
{
char *s1 = "2o3i4jiojrewjeroiksopf";
for(int i1=0;s1[i1]!=0;i1++)
printf("%c",s1[i1]);
printf("\n");
CString s2 = "2o3i4jiojrewjeroiksopf";
for(int i2=0;s2[i2]!=0;i2++)
printf("%c",s2[i2]);
printf("\n");
return 0;
}
但是使用上面的代码时编译也是 0错误,0警告
而运行时出现错误(如附图)显然 CString 和 char* 存在很明显的区别,但是现在还没有搞清楚,希望大家一起讨论下
for(int i2=0;i2<s2.GetLength();i2++)
printf("%c",s2[i2]);
printf("\n");
http://msdn2.microsoft.com/zh-cn/library/ms235631(VS.80).aspx
*char是C语言的基本类型数组 两者在物理存放上有本质的不同
*char就是连续存放的一段内存,每个字节就是一个字符
CString是较复杂的数据结构,有数据段和代码段之分 本质上,这两者的区别就是C与C++的区别
在WIN32平台下到底能不能使用CString!怎么用?需要转换吗?
==========================
这两个根本就不是一回事,CString是MFC的封装类,char *是字长符串指针,虽然都是处理字符串的,但是从语言概念上说两者不是一回事.Win32平台下能不能用CString?你指的是在SDK下吧,好像能用,不过要加头文件.
可以试下呢
我试了 可是出现了上面的错误!!!!
#include<iostream>
#include<string>
using namespace std;
int main()
{string s2 = "2o3i4jiojrewjeroiksopf";
for(int i2=0;s2[i2]!='\0';i2++)
cout<<s2[i2];
return 0;
}
应该在C++里面才有
一个是指针
在C语言里根本就没有CString这一说。肯定会出错了。
首先我想说 三楼同志是对的
用他的方式我成功了另外 VC控制台程序中也可以使用CString的
知识需要增加头文件afx.h
另外创建工程的时候需要支持MFC 模式的
for(int i1=0;s1[i1]!=0;i1++)
printf("%c",s1[i1]); 代码有问题 for(int i1=0;s1[i1]!="\0";i1++)