c++ string 与 char 互转

很简单如下

  1. char bts[] = {'A','B','C','D','E'};
  2. printf("%s\n",bts);
  3. //char to string
  4. std::string strBts = bts;
  5. std::cout << strBts << std::endl;
  6.  
  7. //string to char
  8. char *theBts = (char *)strBts.c_str();
  9. printf("%s\n",theBts);

c++ base64 工具

  1. //
  2. // base64.h
  3. // CPPWork
  4. // from http://stackoverflow.com/questions/180947/base64-decode-snippet-in-c
  5. // Created by cocoa on 16/8/5.
  6. // Copyright © 2016年 cc. All rights reserved.
  7. //
  8.  
  9. #ifndef base64_h
  10. #define base64_h
  11.  
  12. #include <string>
  13.  
  14. std::string base64_encode(unsigned char const* bytes_to_encode, unsigned int in_len);
  15. std::string base64_decode(std::string const& encoded_string);
  16.  
  17. #endif /* base64_h */
  1. //
  2. // base64.cpp
  3. // CPPWork
  4. //
  5. // Created by cocoa on 16/8/5.
  6. // Copyright © 2016年 cc. All rights reserved.
  7. //
  8.  
  9. #include "base64.h"
  10. #include <iostream>
  11.  
  12. static const std::string base64_chars =
  13. "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  14. "abcdefghijklmnopqrstuvwxyz"
  15. "0123456789+/";
  16.  
  17. static inline bool is_base64(unsigned char c) {
  18. return (isalnum(c) || (c == '+') || (c == '/'));
  19. }
  20.  
  21. std::string base64_encode(unsigned char const* bytes_to_encode, unsigned int in_len) {
  22. std::string ret;
  23. int i = ;
  24. int j = ;
  25. unsigned char char_array_3[];
  26. unsigned char char_array_4[];
  27.  
  28. while (in_len--) {
  29. char_array_3[i++] = *(bytes_to_encode++);
  30. if (i == ) {
  31. char_array_4[] = (char_array_3[] & 0xfc) >> ;
  32. char_array_4[] = ((char_array_3[] & 0x03) << ) + ((char_array_3[] & 0xf0) >> );
  33. char_array_4[] = ((char_array_3[] & 0x0f) << ) + ((char_array_3[] & 0xc0) >> );
  34. char_array_4[] = char_array_3[] & 0x3f;
  35.  
  36. for(i = ; (i <) ; i++)
  37. ret += base64_chars[char_array_4[i]];
  38. i = ;
  39. }
  40. }
  41.  
  42. if (i)
  43. {
  44. for(j = i; j < ; j++)
  45. char_array_3[j] = '\0';
  46.  
  47. char_array_4[] = (char_array_3[] & 0xfc) >> ;
  48. char_array_4[] = ((char_array_3[] & 0x03) << ) + ((char_array_3[] & 0xf0) >> );
  49. char_array_4[] = ((char_array_3[] & 0x0f) << ) + ((char_array_3[] & 0xc0) >> );
  50. char_array_4[] = char_array_3[] & 0x3f;
  51.  
  52. for (j = ; (j < i + ); j++)
  53. ret += base64_chars[char_array_4[j]];
  54.  
  55. while((i++ < ))
  56. ret += '=';
  57.  
  58. }
  59.  
  60. return ret;
  61.  
  62. }
  63. std::string base64_decode(std::string const& encoded_string) {
  64. int in_len = encoded_string.size();
  65. int i = ;
  66. int j = ;
  67. int in_ = ;
  68. unsigned char char_array_4[], char_array_3[];
  69. std::string ret;
  70.  
  71. while (in_len-- && ( encoded_string[in_] != '=') && is_base64(encoded_string[in_])) {
  72. char_array_4[i++] = encoded_string[in_]; in_++;
  73. if (i ==) {
  74. for (i = ; i <; i++)
  75. char_array_4[i] = base64_chars.find(char_array_4[i]);
  76.  
  77. char_array_3[] = (char_array_4[] << ) + ((char_array_4[] & 0x30) >> );
  78. char_array_3[] = ((char_array_4[] & 0xf) << ) + ((char_array_4[] & 0x3c) >> );
  79. char_array_3[] = ((char_array_4[] & 0x3) << ) + char_array_4[];
  80.  
  81. for (i = ; (i < ); i++)
  82. ret += char_array_3[i];
  83. i = ;
  84. }
  85. }
  86.  
  87. if (i) {
  88. for (j = i; j <; j++)
  89. char_array_4[j] = ;
  90.  
  91. for (j = ; j <; j++)
  92. char_array_4[j] = base64_chars.find(char_array_4[j]);
  93.  
  94. char_array_3[] = (char_array_4[] << ) + ((char_array_4[] & 0x30) >> );
  95. char_array_3[] = ((char_array_4[] & 0xf) << ) + ((char_array_4[] & 0x3c) >> );
  96. char_array_3[] = ((char_array_4[] & 0x3) << ) + char_array_4[];
  97.  
  98. for (j = ; (j < i - ); j++) ret += char_array_3[j];
  99. }
  100.  
  101. return ret;
  102. }

c++ string 与 char 互转 以及base64的更多相关文章

  1. 2、CString与string借助char *互转

    CString是MFC中的类,MFC前端界面中获得的字符串是CString类.标准C/C++库函数是不能直接对CString类型进行操作的. string是C++中的类. 安全性 CString &g ...

  2. C#string与char互转

    string s = "asdf"; //字符转char char[] c = s.ToCharArray(); Console.WriteLine(s[]); //char转st ...

  3. PChar,PAnsiChar,String,AnsiString,Char数组,AnsiChar数组转换

    PChar,PAnsiChar,String,AnsiString,Char数组,AnsiChar数组之间的转换关系见下图 通过转换链,可以实现任意两个类型之间的互转.如PChar转PAnsiChar ...

  4. CString与char *互转总结

    1 前言 今天在网上看论坛,发现大家对CString与Char *互转各说一词,其实我发现提问者所说的情况与回答问题的人完全不是同一情况,这里做一总结. 首先大家得清楚一件事,一般在网上提出问题的人大 ...

  5. string与wstring互转

    string与wstring互转  C++ Code  123456789101112131415161718192021222324252627282930313233343536373839404 ...

  6. C++ TCHAR* 与char* 互转

    C++ TCHAR* 与char* 互转 在MSDN中有这么一段: Note: The ANSI code pages can be different on different computers, ...

  7. QString, string, int, char* 之间相互转换

    这三种数据类型在实际运用中经常需要互相转换,那么这里小结下它们之间的转换方法: - Qstring & string Qt中封装的类十分强大,其成员函数数量之多比STD有过之而无不及,许多程序 ...

  8. string to char* and char* to string 玩转 String 和 Char*

    char 类型是c语言中常见的一个数据类型,string是c++中的一个,它的定义为 Strings are objects that represent sequences of character ...

  9. string,const char*,char*之间的相互转换

    1. string转const char* string s = "abc"; const char* c_s = s.c_str(); 2. const char*转string ...

随机推荐

  1. Android权限安全(2)给基本组件自定义权限(以activity为例)

    给基本组件自定义权限(以activity为例) 1.有访问权限的activity的定义端 1.1定义权限 <permission android:name="com.example.f ...

  2. [转]Unity3D协程介绍 以及 使用

    作者ChevyRay ,2013年9月28日,snaker7译  原文地址:http://unitypatterns.com/introduction-to-coroutines/ 在Unity中,协 ...

  3. ABAP DESCRIBE语句

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  4. [SAP ABAP开发技术总结]SD销售订单定价过程

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  5. 基于jQuery的H5调试条

    <!DOCTYPE html> <html> <head> <meta name="viewport" content="wid ...

  6. Java Abstract class and Interface

    Abstract Class 在定义class的时候必须有abstract 关键字 抽象方法必须有abstract关键字. 可以有已经实现的方法. 可以定义static final 的常量. 可以实现 ...

  7. Android ActionBar以及menu的代码设置样式

    menu部分xml代码 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android= ...

  8. HDU-4511 小明系列故事——女友的考验 floyd变种-标号递增最短路

    题意:给定N个点,现在要求出从1号点到N号点的最短路.题目给的限制条件就是对于某条路径是不能够走的,但是可以选择某段路径走,另外就是所走的路径的标号必须是递增的. 分析:由于给定的是一些列的坐标点,这 ...

  9. 改变bootstarp图标水平方向

    我一开始是以为bootstarp已经自定义了方向的类的,但是我查阅了好久都没有看到,我这里用的是CSS3的旋转180° 1:HTML <i class="icon-thumbs-dow ...

  10. 2016中国APP分类排行榜参选入围产品公示

    2016中国APP分类排行榜参选入围产品公示   由中国科学院<互联网周刊>.中国社会科学院信息化研究中心.eNet硅谷动力共同主办的2016中国APP分类排行榜发布暨颁奖晚宴即将举行.此 ...