c++ string 与 char 互转 以及base64
c++ string 与 char 互转
很简单如下
- char bts[] = {'A','B','C','D','E'};
- printf("%s\n",bts);
- //char to string
- std::string strBts = bts;
- std::cout << strBts << std::endl;
- //string to char
- char *theBts = (char *)strBts.c_str();
- printf("%s\n",theBts);
c++ base64 工具
- //
- // base64.h
- // CPPWork
- // from http://stackoverflow.com/questions/180947/base64-decode-snippet-in-c
- // Created by cocoa on 16/8/5.
- // Copyright © 2016年 cc. All rights reserved.
- //
- #ifndef base64_h
- #define base64_h
- #include <string>
- std::string base64_encode(unsigned char const* bytes_to_encode, unsigned int in_len);
- std::string base64_decode(std::string const& encoded_string);
- #endif /* base64_h */
- //
- // base64.cpp
- // CPPWork
- //
- // Created by cocoa on 16/8/5.
- // Copyright © 2016年 cc. All rights reserved.
- //
- #include "base64.h"
- #include <iostream>
- static const std::string base64_chars =
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- "abcdefghijklmnopqrstuvwxyz"
- "0123456789+/";
- static inline bool is_base64(unsigned char c) {
- return (isalnum(c) || (c == '+') || (c == '/'));
- }
- std::string base64_encode(unsigned char const* bytes_to_encode, unsigned int in_len) {
- std::string ret;
- int i = ;
- int j = ;
- unsigned char char_array_3[];
- unsigned char char_array_4[];
- while (in_len--) {
- char_array_3[i++] = *(bytes_to_encode++);
- if (i == ) {
- char_array_4[] = (char_array_3[] & 0xfc) >> ;
- char_array_4[] = ((char_array_3[] & 0x03) << ) + ((char_array_3[] & 0xf0) >> );
- char_array_4[] = ((char_array_3[] & 0x0f) << ) + ((char_array_3[] & 0xc0) >> );
- char_array_4[] = char_array_3[] & 0x3f;
- for(i = ; (i <) ; i++)
- ret += base64_chars[char_array_4[i]];
- i = ;
- }
- }
- if (i)
- {
- for(j = i; j < ; j++)
- char_array_3[j] = '\0';
- char_array_4[] = (char_array_3[] & 0xfc) >> ;
- char_array_4[] = ((char_array_3[] & 0x03) << ) + ((char_array_3[] & 0xf0) >> );
- char_array_4[] = ((char_array_3[] & 0x0f) << ) + ((char_array_3[] & 0xc0) >> );
- char_array_4[] = char_array_3[] & 0x3f;
- for (j = ; (j < i + ); j++)
- ret += base64_chars[char_array_4[j]];
- while((i++ < ))
- ret += '=';
- }
- return ret;
- }
- std::string base64_decode(std::string const& encoded_string) {
- int in_len = encoded_string.size();
- int i = ;
- int j = ;
- int in_ = ;
- unsigned char char_array_4[], char_array_3[];
- std::string ret;
- while (in_len-- && ( encoded_string[in_] != '=') && is_base64(encoded_string[in_])) {
- char_array_4[i++] = encoded_string[in_]; in_++;
- if (i ==) {
- for (i = ; i <; i++)
- char_array_4[i] = base64_chars.find(char_array_4[i]);
- char_array_3[] = (char_array_4[] << ) + ((char_array_4[] & 0x30) >> );
- char_array_3[] = ((char_array_4[] & 0xf) << ) + ((char_array_4[] & 0x3c) >> );
- char_array_3[] = ((char_array_4[] & 0x3) << ) + char_array_4[];
- for (i = ; (i < ); i++)
- ret += char_array_3[i];
- i = ;
- }
- }
- if (i) {
- for (j = i; j <; j++)
- char_array_4[j] = ;
- for (j = ; j <; j++)
- char_array_4[j] = base64_chars.find(char_array_4[j]);
- char_array_3[] = (char_array_4[] << ) + ((char_array_4[] & 0x30) >> );
- char_array_3[] = ((char_array_4[] & 0xf) << ) + ((char_array_4[] & 0x3c) >> );
- char_array_3[] = ((char_array_4[] & 0x3) << ) + char_array_4[];
- for (j = ; (j < i - ); j++) ret += char_array_3[j];
- }
- return ret;
- }
c++ string 与 char 互转 以及base64的更多相关文章
- 2、CString与string借助char *互转
CString是MFC中的类,MFC前端界面中获得的字符串是CString类.标准C/C++库函数是不能直接对CString类型进行操作的. string是C++中的类. 安全性 CString &g ...
- C#string与char互转
string s = "asdf"; //字符转char char[] c = s.ToCharArray(); Console.WriteLine(s[]); //char转st ...
- PChar,PAnsiChar,String,AnsiString,Char数组,AnsiChar数组转换
PChar,PAnsiChar,String,AnsiString,Char数组,AnsiChar数组之间的转换关系见下图 通过转换链,可以实现任意两个类型之间的互转.如PChar转PAnsiChar ...
- CString与char *互转总结
1 前言 今天在网上看论坛,发现大家对CString与Char *互转各说一词,其实我发现提问者所说的情况与回答问题的人完全不是同一情况,这里做一总结. 首先大家得清楚一件事,一般在网上提出问题的人大 ...
- string与wstring互转
string与wstring互转 C++ Code 123456789101112131415161718192021222324252627282930313233343536373839404 ...
- C++ TCHAR* 与char* 互转
C++ TCHAR* 与char* 互转 在MSDN中有这么一段: Note: The ANSI code pages can be different on different computers, ...
- QString, string, int, char* 之间相互转换
这三种数据类型在实际运用中经常需要互相转换,那么这里小结下它们之间的转换方法: - Qstring & string Qt中封装的类十分强大,其成员函数数量之多比STD有过之而无不及,许多程序 ...
- string to char* and char* to string 玩转 String 和 Char*
char 类型是c语言中常见的一个数据类型,string是c++中的一个,它的定义为 Strings are objects that represent sequences of character ...
- string,const char*,char*之间的相互转换
1. string转const char* string s = "abc"; const char* c_s = s.c_str(); 2. const char*转string ...
随机推荐
- Android权限安全(2)给基本组件自定义权限(以activity为例)
给基本组件自定义权限(以activity为例) 1.有访问权限的activity的定义端 1.1定义权限 <permission android:name="com.example.f ...
- [转]Unity3D协程介绍 以及 使用
作者ChevyRay ,2013年9月28日,snaker7译 原文地址:http://unitypatterns.com/introduction-to-coroutines/ 在Unity中,协 ...
- ABAP DESCRIBE语句
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- [SAP ABAP开发技术总结]SD销售订单定价过程
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- 基于jQuery的H5调试条
<!DOCTYPE html> <html> <head> <meta name="viewport" content="wid ...
- Java Abstract class and Interface
Abstract Class 在定义class的时候必须有abstract 关键字 抽象方法必须有abstract关键字. 可以有已经实现的方法. 可以定义static final 的常量. 可以实现 ...
- Android ActionBar以及menu的代码设置样式
menu部分xml代码 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android= ...
- HDU-4511 小明系列故事——女友的考验 floyd变种-标号递增最短路
题意:给定N个点,现在要求出从1号点到N号点的最短路.题目给的限制条件就是对于某条路径是不能够走的,但是可以选择某段路径走,另外就是所走的路径的标号必须是递增的. 分析:由于给定的是一些列的坐标点,这 ...
- 改变bootstarp图标水平方向
我一开始是以为bootstarp已经自定义了方向的类的,但是我查阅了好久都没有看到,我这里用的是CSS3的旋转180° 1:HTML <i class="icon-thumbs-dow ...
- 2016中国APP分类排行榜参选入围产品公示
2016中国APP分类排行榜参选入围产品公示 由中国科学院<互联网周刊>.中国社会科学院信息化研究中心.eNet硅谷动力共同主办的2016中国APP分类排行榜发布暨颁奖晚宴即将举行.此 ...