![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c语言基础
bladeandmaster88
好好奋斗
展开
-
C语言unsigned char、char与int之间的转换
参考博客:点击打开链接原创 2016-10-23 18:40:50 · 27317 阅读 · 3 评论 -
IP地址与无符号整数值相互转换
方法1:IP地址转换为整数:比如"192.168.1.254",以点为分割,将192 168 1 254保存在一个int a[4]数组里,然后通过unsigned int nResult = (a[3] 整数转换为IP地址:把这个整数转换成一个无符号32位二进制数。从左到右,每八位进行一下分割,得到4段8位的二进制数,把这些二进制数转换成整数#include #inclu原创 2017-01-02 17:39:41 · 4733 阅读 · 0 评论 -
c++ifstream写入unicode编码格式的文本
#include #include #include #include using namespace std;#pragma comment(lib,"libIconv.lib")//编码转换,source_charset是源编码,to_charset是目标编码std::string code_convert(char *source_charset, char *to_cha原创 2017-02-04 23:58:48 · 3225 阅读 · 0 评论 -
不依赖任何系统API,用c语言实现gbk/utf8/unicode编码转换
汉字'我'Unicode编码是 0x6211 01100010 00010001UTF8编码是 0xe68891 11100110 10001000 100010001oxc0 110000000xE0 11100000 | Unicode符号范围 | UTF-8编码方式 n | (十六进制)原创 2017-02-02 19:10:48 · 15981 阅读 · 9 评论 -
Qt之正则表达式QRegExp
http://blog.csdn.net/ljt350740378/article/details/501499631、 QT中的QRegExp类实现了正则表达式的模式匹配。2、Qt中有两个不同类的正则表达式. - 第一类为元字符.它表示一个或多个常量表达式. - 令一类为 转义字符,它代表一个特殊字符. 1) 元字符. 匹配任意单个字符.例如, 1.原创 2017-02-07 21:00:15 · 1402 阅读 · 0 评论 -
c语言宏的总结
(1)#是把它后面的参数转换成一个字符串#defineERROR(module) printf("error:"#module"\n")ERROR(add); //输出error:add(2) ##用来连接前后两个参数,把它们变成一个字符串。#defineConn(x,y) x##yintn=Conn(123,456);//结果就是n=123456;##在Qt中的原创 2017-01-26 23:39:03 · 341 阅读 · 0 评论 -
c++判断文件编码格式
记事本打开txt文件,然后另存,有四种编码格式可供选择,分别是:ANSI 无格式定义 对于中文编码格式是GB2312;Unicode 文本里前两个字节为FF FE 字节流是little endianUnicode big endian 文本里前两个字节为FE原创 2017-01-28 21:50:43 · 12863 阅读 · 16 评论 -
windows API实现中文中字符串与GBK、Unicode、UTF-8三种编码互转
#include #include #include using namespace std;//gbk转UTF-8string GbkToUtf8(const std::string& strGbk)//传入的strUtf8是GBK编码{ //gbk转unicode int len = MultiByteToWideChar(CP_ACP, 0, strGbk.c_str(),原创 2017-01-31 21:39:01 · 9137 阅读 · 1 评论 -
windows下使用VS编译libIconv库
libiconv是将一种编码格式转换为另一种编码格式的跨平台开源库,但是libiconv 的开发者并没有发布windows下的源码和库,要想在windows下使用libiconv 库,必须自己手动把libiconv 移植到windows平台,具体步骤如下:1、去http://ftp.gnu.org/pub/gnu/libiconv/下载源码包,本文使用的是libiconv-1.14.tar原创 2017-02-01 13:28:31 · 9608 阅读 · 2 评论 -
libIconv库实现中文中字符串与GBK、Unicode、UTF-8三种编码互转
libIconv库实现GBK、Unicode、UTF-8三种编码互转比window api更为简单,而且libIconv库跨平台。IibIconv库在windows下的编译参照windows下使用VS编译libIconv库http://www.gnu.org/software/libiconv/可以查看支持转换的编码类型。下面是几个关键库函数的注释:(1) iconv_t原创 2017-02-01 23:32:12 · 11126 阅读 · 1 评论 -
c语言如何识别无BOM的UTF8文本
UTF-8编码的文本文档,有的带有BOM (Byte Order Mark, 字节序标志),即0xEF, 0xBB, 0xBF,有的没有。Windows下的文本编辑器在保存UTF-8格式的文本文档时会自动添加BOM到文件头。在判断这类文档时,可以根据文档的前3个字节来进行判断。但是,如果文档不带有BOM,就无法根据BOM做出判断,那么那在编程判断时就要根据UTF-8字符编码的规律进行判断了。原创 2017-01-28 20:49:44 · 3194 阅读 · 10 评论 -
数组指针与二级指针如何转化
函数传参时经常会遇到char(*)[]类型的实参与char**类型的形参不兼容。char a[255];char **pstr = &a;会报错这样需要通过 char *b = a;过渡转换一下,再char**pstr = &b;就都是char**类型了原创 2017-02-01 23:55:34 · 2375 阅读 · 0 评论 -
ifStream读取ANSI/Unicode/Utf8文本保存到string里并转成gbk编码
ifstream读取unicode文本到string时,需要过滤文本开始ff fe两个字节,否则转成gbk会失败。ifstream读取utf8文本到string时,需要过滤文本开始efbbbf三个字节,否则转成gbk会失败。下面是实现代码:#include #include #include #include using namespace std;#pragma co原创 2017-02-03 22:04:07 · 8389 阅读 · 0 评论 -
ip地址转换
ip在c++程序里代表一个32位的unsigned int比如unsigned int ip = 3232236030;那如何写程序将ip转换成192.168.1.254这样的形式显示出来#include using namespace std;int main(){ unsigned int ip = 3232236030; ///3232236030对应的二原创 2017-01-02 14:19:19 · 502 阅读 · 0 评论 -
strcpy_s、strcat_s的用法
一、strcpy_s的用法1、strcpy_s的定义errno_t strcpy_s(char *strDestination, size_t numberOfElements, const char *strSource);2、strcpy_s参数的含义strDestination Null目标字符串缓冲区的位置numberOfElements 目标字符串缓冲区的大小st原创 2016-11-23 20:37:24 · 4153 阅读 · 0 评论 -
char*动态数组用c++ifstream和ofstream进行文件读写并用memset初始化
char* str = new char[100]; strcpy(str, "abcdef"); ofstream fout("a.dat", ios::binary); int len = strlen(str); fout.write((char*)&len, sizeof(int)); fout.write(str, len);//'\0'不写入文件中 fout.close(原创 2016-11-18 15:25:58 · 6166 阅读 · 0 评论 -
_INTSIZEOF(n)
定义: #define _INTSIZEOF(n) ((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1) )1 我们知道对于IX86,sizeof(int)一定是4的整数倍,所以~(sizeof(int) - 1) )的值一定是 右面[sizeof(n)-1]/2位为0,整个这个宏也就是保证了右面[sizeof(n)-1]/2位为0原创 2016-11-20 14:00:02 · 451 阅读 · 0 评论 -
c++实现字符串分隔
#include #include #include using namespace std;void split(string s, vector& parts){int start = 0; // 每一分段的开始位置while (start {int end = start;//end每一分段的结束位置while (isdigit(s[e原创 2016-08-18 21:02:05 · 550 阅读 · 0 评论 -
c风格字符串末尾没有'\0'引起的错误
class Student{public:Student() : id(0) {}public:int id;char name[3];char cellphone[6];};int main(){Student record;cout record.id = 201501;//record.name = "qqr";原创 2016-07-23 11:20:46 · 1347 阅读 · 0 评论 -
c语言实现字符串的分割
#include#includeusing namespace std;int split(char text[], char* parts[]){int count = 0; // 分段的个数int start = 0; // 每一分段的首地址bool flag = false; // 遍历text,标识当前是否处于有效字符for (int i =原创 2016-07-21 20:43:42 · 6504 阅读 · 0 评论 -
可变参数函数printf函数的实现
#include#includeusing namespace std;void myitoa(int n, char str[], int radix){ int i, j, remain; char tmp; i = 0; do { remain = n % radix; if (remain > 9) str[i] = remain - 10 + 'A';原创 2016-11-20 15:08:27 · 450 阅读 · 0 评论 -
c语言模拟window系统调用回调函数的过程
#include #include using namespace std;int getTime(){ return clock() / CLOCKS_PER_SEC;}void debug(int num)//回调函数,这个函数模拟处理windows的不同消息,相当于win32的窗口过程处理函数windowProc{ switch (num) { case 1:原创 2016-11-21 16:36:09 · 885 阅读 · 0 评论 -
十进制数转换任意进制数
#includeusing namespace std;void myitoa(int n, char str[], int radix){ int i, j, remain; char tmp; i = 0; do { remain = n % radix; if (remain > 9) str[i] = remain - 10 + 'A'; else原创 2016-11-20 15:04:25 · 649 阅读 · 0 评论 -
vs2013生成lib和dll库文件
①新建项目-->win32-->win32项目-->输入项目名为DllTest-->选择Dll-->选择空项目-->完成②添加Test.h和Test.cppTest.h#define DLLTEST_API __declspec(dllexport) //宏的名字随便取// 声明要导出的函数,每个函数前面加上这个宏DLLTEST_API int add(int a, in原创 2016-11-22 09:54:05 · 446 阅读 · 0 评论 -
c风格字符串与c风格字符串数组
#include#includeusing namespace std;int main(){ char*c = "hello"; cout << &c <<" "<<(int)c<< endl;//为什么输出c是字符串而不是地址 cout << *c << endl; cout << endl; char s[] = "hello"; cout << s << endl;原创 2016-11-08 11:42:39 · 687 阅读 · 0 评论 -
strcpy memcpy实现原理
#include #include using namespace std;char *strcpy1(char *strDest, const char *strSrc)//strcpy只能复制字符串{ assert((strDest != NULL) && (strSrc != NULL)); char *address = strDest;原创 2016-11-23 16:37:33 · 2266 阅读 · 0 评论 -
const常量用extern声明定义的问题
test.h#ifndef TEST_H_#define TEST1_H//常量声明和定义采取这种方法即可const int a = 20; //不报错,因为const变量链接属性默认是内部链接,就算两个cpp文件都引用了该.h文件,也不会出现重复定义的错误。//extern const int b = 20;//这个报错,因为加上extern之后链接属性就是外部链接了,当被多个原创 2017-03-22 11:43:52 · 5742 阅读 · 0 评论