--- 已经通过初步测试----

------------------ 下面的是传统常见数据类型的转换(非c++11)--------------- 

std::string 与其他常用类型相互转换,

CString 与其他常见类型相互转换,

  包括: int, char*, float, double, long。

自己写个类,方便调用, 包括:

 MFC

A、int 转 CString

B、double 转 CString

C 、float 转 CString

D、long 转 CString

E、char * 转CString

F、CString 转 int 、double 、float、long、char * 。

C++

A、int 转 std::string

B、 double 转 std::string

C 、 float 转 std::string

D、long 转 std::string

E、char * 转 std::string

F、std::string 转 int, long , float, double ,char *

源码( .hpp 文件 )

  1 // 照写
2 #pragma once
3 // MFC CString需要的头文件
4 #include <afxstr.h>
5 // 标准C++用到的头文件
6 #include <string>
7 #include <sstream>
8
9 // 命名空间
10 namespace util
11 {
12
13 // 进制枚举
14 enum ubase
15 {
16 // 转为10进制
17 base_to_10 = 10,
18 // 转为16进制
19 base_to_16 = 16,
20 };
21
22 // 各种数据类型转换
23 class data_trans
24 {
25 public:
26 // CString 转 其他
27 //--------------------------------
28 // CString 转 long(int) 参数【base】表示str的进制,
29 static int cs_to_l(const CString str, const int base = 10)
30 {
31 // 方法1
32 // return _wtoi(str);
33
34 // 方法2
35 USES_CONVERSION;
36 // 第一个参数:字符串, 第二个参数,默认0, 第三个参数:进制,10-10进制,16-16进制
37 return strtol(W2A(str), 0, base);
38 }
39
40 // CString 转 double
41 static double cs_to_d(const CString str)
42 {
43 return _wtof(str);
44 }
45
46 // Cstring 转 double、float
47 template <typename T>
48 static T cs_to_f(const CString str)
49 {
50 return _wtof(str);
51 }
52
53 // CString 转 char *
54 static char * cs_to_pchar(const CString str)
55 {
56 USES_CONVERSION;
57 return W2A(str);
58 }
59
60
61 // 其他 转 CString
62 //--------------------------------
63 // int、long 转 CString
64 template<typename T>
65 static CString i_to_cs(const T val, const ubase base = base_to_10)
66 {
67 CString str;
68
69 switch (base)
70 {
71 // 转为16进制的字符串
72 case base_to_16:
73 str.Format(L"%X", val);
74 break;
75
76 // 转为10进制的字符串
77 default:
78 str.Format(L"%d", val);
79 break;
80 }
81
82 return str;
83 }
84
85
86 // float, double转Cstring
87 template <typename T>
88 static CString f_to_cs(const T val)
89 {
90 CString str;
91 str.Format(L"%.f", val);
92
93 return str;
94 }
95
96 // char* 转Cstring
97 static CString pchar_to_cs(const char* parr)
98 {
99 // 为空? 那就返回空
100 if (NULL == parr || nullptr == parr)
101 return CString(L"");
102
103 CString str(parr);
104
105 return str;
106 }
107
108 // 下面是C++的一些转换
109 //------------------------------------------------------------------
110 // std::string 转其他
111
112 // std::string 转 int
113 static int s_to_i(const std::string str)
114 {
115 // str.c_str()返回的是一个char*的字符串
116 return atoi(str.c_str());
117 }
118
119 // std::string 转long、int 参数【base】是 指 str的进制
120 static long s_to_l(const std::string str, const int base = 10)
121 {
122 return strtol(str.c_str(), 0, base);
123 }
124
125 // std::string 转 float
126 static double s_to_f(const std::string str)
127 {
128 return atof(str.c_str());
129 }
130
131 // std::string 转 char*, 必须传递引用,否则,返回结果为NULL
132 static char * s_to_pchar(const std::string& str)
133 {
134 return (char *)str.c_str();
135 }
136
137
138 //--------------------------------------------------------
139 // 其他(int、double、float、long、shot、)转 std::string
140 //---------------------------------------------------------
141 template<typename T>
142 // value to string
143 static std::string val_to_s(const T val)
144 {
145 std::string s;
146 std::stringstream ss;
147 ss << val;
148 ss >> s;
149 return s;
150 }
151
152 }; // 类结束
153
154 } // 命名空间结束

类 调用范例:

  CString 其他常见类型

CString 转 int

cs_int = static_cast<int>(util::data_trans::cs_to_l(L"100"));

CString 转 long

cs_l = util::data_trans::cs_to_l(L"10", 16);

CString 转 float

cs_f = util::data_trans::cs_to_f<float>(L"102");

CString 转 char*

parr = util::data_trans::cs_to_pchar(L"103");

  其他常见类型  转 CString

int 转 CString

CString cstr_int = util::data_trans::i_to_cs<int>(cs_int);

long 转 CString

CString cstr_long = util::data_trans::i_to_cs<long>(cs_l, util::ubase::base_to_16);

 double 转 CString

CString cstr_double = util::data_trans::f_to_cs<double>(cs_d);

float 转 CString

CString cstr_float = util::data_trans::f_to_cs<float>(cs_f);

char * 转 CString

CString cstr_parr = util::data_trans::pchar_to_cs("ABC");

下面是: c++相关转换

std::string   转  int

s_int = static_cast<int>(util::data_trans::s_to_l(("100"), 10));

std::string   转  long

s_long = util::data_trans::s_to_l(("100"), 16);

std::string   转 double

s_d = util::data_trans::s_to_f("102.8");

std::string   转 char *

std::string str_tmp("103");
parr = util::data_trans::s_to_pchar(str_tmp);

-------其他常见类型  转  std::string   ---------

int 转  std::string

std::string str_int = util::data_trans::val_to_s<int>(200);

float  转 std::string

std::string str_float = util::data_trans::val_to_s<float>(200.3);

double 转 std::string

std::string str_double = util::data_trans::val_to_s<double>(202.3);

long 转 std::string

std::string str_long = util::data_trans::val_to_s<long>(1000);

char * 转 std::string

std::string str_char = util::data_trans::val_to_s<char*>("ABC");

-------完整示例代码------------

 1 int cs_int = 0;
2 double cs_d = 0.0;
3 float cs_f = 0.0;
4 char *parr = NULL;
5 long cs_l = 0;
6
7 // Cstring 转各种
8 cs_int = static_cast<int>(util::data_trans::cs_to_l(L"100"));
9 cs_l = util::data_trans::cs_to_l(L"10", 16);
10 cs_d = util::data_trans::cs_to_d(L"101");
11 cs_f = util::data_trans::cs_to_f<float>(L"102");
12 parr = util::data_trans::cs_to_pchar(L"103");
13
14 // 各种转Cstring
15 CString cstr_int = util::data_trans::i_to_cs<int>(cs_int);
16 CString cstr_long = util::data_trans::i_to_cs<long>(cs_l, util::ubase::base_to_16);
17 CString cstr_double = util::data_trans::f_to_cs<double>(cs_d);
18 CString cstr_float = util::data_trans::f_to_cs<float>(cs_f);
19 CString cstr_parr = util::data_trans::pchar_to_cs("ABC");

  c++

 1 int s_int    = 0;
2 double s_d = 0.0;
3 float s_f = 0.0;
4 char *parr = NULL;
5 long s_long = 0;
6 std::string str_tmp("103");
7
8 // string 转 各种
9 s_int = static_cast<int>(util::data_trans::s_to_l(("100"), 10));
10 s_long = util::data_trans::s_to_l(("100"), 16);
11 s_d = util::data_trans::s_to_f("102");
12 parr = util::data_trans::s_to_pchar(str_tmp);
13
14
15 // 各种转string
16 std::string str_int = util::data_trans::val_to_s<int>(200);
17 std::string str_float = util::data_trans::val_to_s<float>(200.3);
18 std::string str_double = util::data_trans::val_to_s<double>(202.3);
19 std::string str_long = util::data_trans::val_to_s<long>(1000);
20 std::string str_char = util::data_trans::val_to_s<char*>("ABC");

【3/9/2020 17:38】 增加 c++11新特性函数完成数据类型转换

-------------- 下面的是传统常见数据类型的转换(c++11)--------------- 


需要包含头文件

#include <string>

先 上源码, 做个类, 方便调用:

 1 // c++11新增的函数实现类型转换
2 class data_trans11
3 {
4 public:
5 // 其他常见类型 转 std::string
6 // 包括:int、double、long、long long、 long double
7 // unsigned long, unsigned long long,
8 template<typename T>
9 static std::string to_str(const T val)
10 {
11 return to_string(val);
12 }
13
14 // std::string 转 int
15 // 参数【base】表示【str】的进制
16 static int s_to_i(const std::string str, const int base = 10)
17 {
18 return std::stoi(str, 0, base);
19 }
20
21 // std::string 转 float
22 static float s_to_f(const std::string str)
23 {
24 return std::stof(str);
25 }
26
27 // std::string 转 double
28 static double s_to_d(const std::string str)
29 {
30 return std::stod(str);
31 }
32
33 // std::string 转 long
34 // 参数【base】表示【str】的进制
35 static long s_to_l(const std::string str, const int base = 10)
36 {
37 return std::stol(str, 0, base);
38 }
39
40 // std::string 转 unsigned long
41 // 参数【base】表示【str】的进制
42 static unsigned long s_to_ul(const std::string str, const int base = 10)
43 {
44 return std::stoul(str, 0, base);
45 }
46
47 // std::string 转 long long
48 // 参数【base】表示【str】的进制
49 static long long s_to_ll(const std::string str, const int base = 10)
50 {
51 return std::stoll(str, 0, base);
52 }
53
54 // std::string 转 unsigned long long
55 // 参数【base】表示【str】的进制
56 static unsigned long long s_to_ull(const std::string str, const int base = 10)
57 {
58 return std::stoull(str, 0, base);
59 }
60
61 // std::string 转 long double
62 static long double s_to_ld(const std::string str)
63 {
64 return std::stold(str);
65 }
66 };

类 调用 范例如下:

------- 常见数据类型  转 std::string ------------------

包括:int、double、long、long long、 long double、unsigned long, unsigned long long  转 std::string

int 转 std::string

std::string str_int = util::data_trans11::to_str<int>(2);

double 转 std::string

std::string str_double = util::data_trans11::to_str<double>(3.3);

float 转 std::string

std::string str_float = util::data_trans11::to_str<float>(4.4);

long 转 std::string

std::string str_long = util::data_trans11::to_str<long>(5);

long long 转 std::string

std::string str_ll = util::data_trans11::to_str<long long>(6);

unsigned long long 转 std::string

std::string str_ull = util::data_trans11::to_str<unsigned long long>(7);

long double 转 std::string

std::string str_ld = util::data_trans11::to_str<long double>(8.8);

----------下面是 字符串  转 其他常见类型  ---------------

std::string 转 int

v_int = util::data_trans11::s_to_i("11", 16);

std::string 转 float

v_float = util::data_trans11::s_to_f("12.2");

std::string 转 double

v_double = util::data_trans11::s_to_d("13.3");

std::string 转 long

v_long = util::data_trans11::s_to_l("14", 16);

std::string 转 unsigned long long

v_ull = util::data_trans11::s_to_ull("16", 16);

std::string 转 long long

v_ll = util::data_trans11::s_to_ll("17", 16);

std::string 转 long double

v_ld = util::data_trans11::s_to_ld("18.8");

欢迎指正。

c++之常见数据类型(int,double,float,long double long long 与std::string之间)相互转换(含MFC的CString、含C++11新特性函数)的更多相关文章

  1. 数据类型int、float、str、list、dict、set定义及常用方法汇总

    数据类型int:记录整数事物状态 可变不可变:值不可变类型,改变变量值实则是改变了变量的指向 int():功能:1.工厂函数, i = 5 <==> i = int(5) 2.强制类型转换 ...

  2. Int与String之间相互转换

    1 如何将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt([ ...

  3. 【C++】int、const char*、char*、char、string之间的转换

    #include "stdafx.h" #include<string> #include<vector> #include<iostream> ...

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

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

  5. Java基础-数据类型int,short,char,long,float,double,boolean,byte

    Java语言是静态类型的(statical typed),也就是说所有变量和表达式的类型再编译时就已经完全确定.由于是statical typed,导致Java语言也是强类型(Strong typed ...

  6. c语言基本数据类型short、int、long、char、float、double

    C 语言包含的数据类型如下图所示: 一.数据类型与“模子”short.int.long.char.float.double 这六个关键字代表C 语言里的六种基本数据类型. 怎么去理解它们呢? 举个例子 ...

  7. java.lang基础数据类型boolean、char、byte、short、int、long、float、double (JDK1.8)

    java.lang.Boolean public static int hashCode(boolean value) { return value ? 1231 : 1237; } JDK 1.8新 ...

  8. c语言基本数据类型(short、int、long、char、float、double)

    一 C 语言包含的数据类型 short.int.long.char.float.double 这六个关键字代表C 语言里的六种基本数据类型. 在不同的系统上,这些类型占据的字节长度是不同的: 在32 ...

  9. c语言基本数据类型short、int、long、char、float、double大小及命名规则

    C 语言包含的数据类型: 一.数据类型与“模子”short.int.long.char.float.double 这六个关键字代表C 语言里的六种基本数据类型. 怎么去理解它们呢? 举个例子:见过藕煤 ...

随机推荐

  1. URI和URL的区别(转)

    转载:http://www.cnblogs.com/gaojing/archive/2012/02/04/2413626.html 这两天在写代码的时候,由于涉及到资源的位置,因此,需要在Java B ...

  2. eclipse不自动弹出提示的解决办法(eclipse alt+/快捷键失效)

    转载:http://yuncode.net/article/a_53bf6888b6f5065 我的问题:在jsp中使用"alt+/"不能够自动导入java包.利用3,4解决问题 ...

  3. SQL-Union、Union ALL合并两个或多个 SELECT 语句的结果集

    UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相似的数据类型.同时,每条 SELECT 语句中的列 ...

  4. 【模板】网络最大流(EK、Dinic、ISAP)(网络流)/洛谷P3376

    题目链接 https://www.luogu.com.cn/problem/P3376 题目大意 输入格式 第一行包含四个正整数 \(n,m,s,t\),分别表示点的个数.有向边的个数.源点序号.汇点 ...

  5. 谈一谈 DDD

    一.前言 最近 10 年的互联网发展,从电子商务到移动互联,再到"互联网+"与传统行业的互联网转型,是一个非常痛苦的转型过程.在这个过程中,一方面会给我们带来诸多的挑战,另一方面又 ...

  6. HDC2021技术分论坛:异构组网如何解决共享资源冲突?

    作者:lijie,HarmonyOS软总线领域专家 相信大家对HarmonyOS的"超级终端"比较熟悉了.那么,您知道超级终端场景下的多种设备在不同环境下是如何组成一个网络的吗?这 ...

  7. 判断是否有重复,判断字符串是否有重复汉字【c#】

    string corn = "公司"; int n = 0; if (tbCorporateName.Text.IndexOf(corn) > -1) { string co ...

  8. C#点击按钮添加标签

    <asp:Button ID="button1" runat="server" Text="创建" onclick="But ...

  9. JVM1 JVM与Java体系结构

    目录 JVM与Java体系结构 虚拟机与Java虚拟机 虚拟机 Java虚拟机 JVM的位置 JVM的整体结构 Java代码执行流程 JVM的架构模型 基于栈的指令级架构 基于寄存器的指令级架构 两种 ...

  10. Hadoop的HA机制浅析

    Zookeeper在Hadoop的HA中的应用 非HA的弊端: HDFS集群的分布式存储是靠namenode节点(namenode负责响应客户端请求)来实现.在非HA集群中一旦namenode宕机,虽 ...