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的更多相关文章

  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. 《redis-php中文参考手册》

    <redis中文手册>,将示例代码用php来实现,注意php-redis与redis_cli的区别(主要是返回值类型和参数用法). phpredis是redis的php的一个扩展,效率是相 ...

  2. java初始化笔记

    构造器初始化static块与非static块区别:对象创建时都做块的初始化,非static块仅在实例创建时初始化,static块在类被第一次加载时初始化数组初始化注意点:1.数组定义时最好在定义的同时 ...

  3. 修改 OWA 修改密码的生效时间

    从 Exchange 中文站之前的文章配置 OWA 下次登录时更改密码中, 我们知道在 Exchange 2010 SP1 当中是可以配置在 OWA 中修改域用户的密码的,那么不知道你是否有发现,当用 ...

  4. Mysql 导入 MSSQL

    .安装mysql数据库的ODBC驱动,mysql-connector-odbc--win32.msi .打开控制面板\管理工具\数据源ODBC,在用户DSN中添加一个MySQL ODBC .51数据源 ...

  5. [Java解惑]异常

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

  6. C# 模拟鼠标写字

    经常看到别人拿个四四方方的写字板用笔写字,用C#其实也可以实现,大致思路就是处理鼠标的坐标和Graphics, 代码如下: 首先声明两个全局变量 bool isMouseDown = false; P ...

  7. CUBRID学习笔记 31 通过select创建表

    语法 CREATE {TABLE | CLASS} <table_name> [( <column_definition> [,<table_constraint> ...

  8. Codeforces Round #380 (Div. 2, Rated, Based on Technocup 2017 - Elimination Round 2) E. Subordinates 贪心

    E. Subordinates time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  9. Ext.net 异常统一管理,铥掉可恶的 Request Failure

    Ext.net 异常统一管理,铥掉可恶的 Request Failure 看着这样的框框是不是很不爽 灭他.也不难.. .如果全部页面都有继承一个自定义的父类 ..那整个项目代码量就只有几行了.. 单 ...

  10. maven使用入门(pom)

    mvn clean complie mvn clean test mvn clean package mvn clean install(该任务将该项目输出的jar安装到了Maven本地仓库中) 各个 ...