
菜鸟:vc++ 一般是怎么声明和赋值字符串的?
我是用c和windowsAPI开发windows窗口程序,要用到字符串的声明和赋值,我如下这样写,均错误,所以求正确的写法,感谢!charmyArticle[1000];...
我是用 c 和 windows API 开发windows 窗口程序,
要用到 字符串的声明 和 赋值,
我如下这样写,均错误,所以求正确的写法,感谢!
char myArticle[1000];
myArticle = "菜鸟求助,怎么声明和赋值字符串啊";
char myAritlce[];
myAritlce = "菜鸟求助,怎么声明和赋值字符串啊";
要求:
1. 要适用于 用 c和 win API 开发程序的要求。所以, 需要哪些头文件,请写上。
不要用 到MFC 中的东西。
2. 字符串 声明 和 赋值 要分开 (即分两条语句写)
3. 我的字符串长度不能确定。(但能确定最大长度)
4. 用 c 开发 windows 程序 最常见,最主流的 字符串声明 和赋值方法是什么。 展开
要用到 字符串的声明 和 赋值,
我如下这样写,均错误,所以求正确的写法,感谢!
char myArticle[1000];
myArticle = "菜鸟求助,怎么声明和赋值字符串啊";
char myAritlce[];
myAritlce = "菜鸟求助,怎么声明和赋值字符串啊";
要求:
1. 要适用于 用 c和 win API 开发程序的要求。所以, 需要哪些头文件,请写上。
不要用 到MFC 中的东西。
2. 字符串 声明 和 赋值 要分开 (即分两条语句写)
3. 我的字符串长度不能确定。(但能确定最大长度)
4. 用 c 开发 windows 程序 最常见,最主流的 字符串声明 和赋值方法是什么。 展开
10个回答
展开全部
你可以
LPCTSTR myarticle = _T("abcdef");
如果你生命的是数组,那么需要用_tcscpy或者_tcscpy_s将字符串复制进数组。
另外,如果开始学习Win32编程,要熟悉Windows API的变量别名
LPCTSTR = const TCHAR*
LPTSTR = TCHAR*
LPCSTR = const char*
LPSTR = char*
LPCWSTR = const wchar_t*
LPWSTR = w_char*
说一说TCHAR和宏_T
TCHAR会根据编译器是否打开了Unicode自动变成char或者wchar_t。事实上目前新写程序都应当使用Unicode,也就是wchar_t类型,一个字符两个字节。
还有一个在使用TCHAR的时候,写字符串的时候总是用_T或者TEXT宏包围他们,就像上面这样,这也是为了自动适应Unicode的需要,在普通ANSI编码的时候,_T什么也不做,在Unicode编码的时候会变成Unicode字符串,也就是在字符串之前加上L
"ANSI字符串"
L"Unicode字符串"
如果你没弄清楚这个,很有可能经常会出现编译器说char*不能转换成wchar_t*类似的错误。
LPCTSTR myarticle = _T("abcdef");
如果你生命的是数组,那么需要用_tcscpy或者_tcscpy_s将字符串复制进数组。
另外,如果开始学习Win32编程,要熟悉Windows API的变量别名
LPCTSTR = const TCHAR*
LPTSTR = TCHAR*
LPCSTR = const char*
LPSTR = char*
LPCWSTR = const wchar_t*
LPWSTR = w_char*
说一说TCHAR和宏_T
TCHAR会根据编译器是否打开了Unicode自动变成char或者wchar_t。事实上目前新写程序都应当使用Unicode,也就是wchar_t类型,一个字符两个字节。
还有一个在使用TCHAR的时候,写字符串的时候总是用_T或者TEXT宏包围他们,就像上面这样,这也是为了自动适应Unicode的需要,在普通ANSI编码的时候,_T什么也不做,在Unicode编码的时候会变成Unicode字符串,也就是在字符串之前加上L
"ANSI字符串"
L"Unicode字符串"
如果你没弄清楚这个,很有可能经常会出现编译器说char*不能转换成wchar_t*类似的错误。
展开全部
//1.声明
char * pStr = NULL;
//2.在声明中赋值
const char * pStr = "hello world"; //const可以省略
//3.字符串赋值,首先指针要在内存中有存放字符串的空间
(1) char str[20];//长度为20个字符,实际上只能放19个字符最后一个字符为‘\0’
(2) char* str = new char[20]; //使用动态内存
//字符串赋值,包含string.h头文件
strcpy( str, "hello world" ) ;//为了安全起见,可以使用strncpy
char * pStr = NULL;
//2.在声明中赋值
const char * pStr = "hello world"; //const可以省略
//3.字符串赋值,首先指针要在内存中有存放字符串的空间
(1) char str[20];//长度为20个字符,实际上只能放19个字符最后一个字符为‘\0’
(2) char* str = new char[20]; //使用动态内存
//字符串赋值,包含string.h头文件
strcpy( str, "hello world" ) ;//为了安全起见,可以使用strncpy
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用CString类是可以的。不过一般使用数组最好是在动态分配的缓冲区中,例如:
char* myArtile=new char[MAX_PATH];
myArtile=“菜鸟求助,怎么声明和赋值字符串啊";
MAX_PATH为系统定义的最大字符串长度,为65535,你也可以自己定义一个长度。
char* myArtile=new char[MAX_PATH];
myArtile=“菜鸟求助,怎么声明和赋值字符串啊";
MAX_PATH为系统定义的最大字符串长度,为65535,你也可以自己定义一个长度。
追问
CSting 和 window.h 冲突怎么办? windows.h 必须得有啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-03-21
展开全部
c中字符串是不支持=赋值的
如果不能在声明中赋值(这就是最常见的),只能对字符串进行拷贝操作,可以用strcpy(myArticle, "菜鸟求助,怎么声明和赋值字符串啊");
需要的头文件: #include<string.h>
如果不能在声明中赋值(这就是最常见的),只能对字符串进行拷贝操作,可以用strcpy(myArticle, "菜鸟求助,怎么声明和赋值字符串啊");
需要的头文件: #include<string.h>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
char myArticle[1000] = "菜鸟求助,怎么声明和赋值字符串啊";
char myAritlce[]= "菜鸟求助,怎么声明和赋值字符串啊";//这个比较好,myAritlce的长度会自动分配成后面的字符串长度,不会造成浪费
char myAritlce[]= "菜鸟求助,怎么声明和赋值字符串啊";//这个比较好,myAritlce的长度会自动分配成后面的字符串长度,不会造成浪费
追问
麻烦请看清我的第2条要求, 谢谢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询