彻底理解C、C++、Win32与COM中的字符串
C/C++中的字符串问题在网上的讲解一向非常含糊,存在各个层次的库混用、滥用的情况,尤其是宽字符与窄字符等问题很难找到有效的资料,本篇随笔分享一下我长期收集到的一些比较准确的资料以及据此得到的个人理解.
C语言中的字符串
C语言中提供了两种字符类型char和wchar_t,C语言使用字符数组来表示字符串,同时支持两种直接量写法:"abcd"和 L"abcd"
来表示字符串常量文字量,C语言允许用字符串常量来初始化字符串。标准C函数库提供了printf和wprintf两个版本的输出函数。
#include <stdio.h>
int main(){
char str[] = "abcd";
wchar_t wstr[] = L"abcd数学";
printf("%s\n",str);
wprintf(L"%s\n",wstr);
return 0;
}
纯C语言环境下,可以使用两个函数wcstombs和mbstowcs 来进行宽窄字符串的互相转换,下面一段是C语言中wcstombs的例子
#include <stdio.h>
#include <stdlib.h>
int main(){
char str[] = "abcd";
wchar_t wstr[] = L"bcda";
wcstombs(str,wstr,sizeof(str));
printf("%s\n",str);
return 0;
}
这两个函数都声明在C标准库头文件stdlib.h中。其它配套的字符串操作都在头文件string.h和wchar.h
C++语言中的字符串
C++中我们有了字符串类string和wstring,这两个类都在头文件string当中,并且iostream中也提供了各自对应版本的输出流:
#include <string>
#include <iostream>
int main(){
std::string str = "abcd";
std::wstring wstr = L"abcd";
std::cout<<str<<std::endl;
std::wcout<<wstr<<std::endl;
return 0;
}
C++中转
相关文档:
C/C++是最主要的编程语言。这里列出了50名优秀网站和网页清单,这些网站提供c/c++源代码。这份清单提供了源代码的链接以及它们的小说明。我已尽力包括最佳的C/C++源代码的网站。这不是一个完整的清单,您有建议可以联系我,我将欢迎您的建议,以进一步加强这方面的清单。
1、http://snippets.dzone.com/tag/c/ --数以千计 ......
到最后还是自己解决了,导致该问题的原因是在linux启动到最后出现:
/bin/sh: can't access tty; job control turned off
而出现该错误的原因和解决方法google后有千百种,尝试了很多种都没有帮我解决问题。
下面是我自己的解决方法:
1. vi /etc/inittab 第一行添加
console::sysinit:/etc/init.d ......
假设xml文件是
<?xml version="1.0" encoding="gb2312" ?>
- <books auth="wren">
- <book id="B01">
<name>哈里波特 </name>
<price>10 </price>
<memo>这是一本很好看的书。 </memo>
</book>
- <boo ......