类型转换小结
来源:互联网 发布:迷彩加厚羽绒服淘宝 编辑:程序博客网 时间:2024/06/07 15:02
在编程的过程中,经常遇到变量类型转换问题,在此小结一下:
以下程序的头文件
#include<iostream>#include<string>#include<sstream> using namespace std;
(1)char* char[] 到string的转换:
//char* to stringint CP1(){char *p = "abcd";char t[] = "abcde";string test;test = p;cout << test << endl;cout << test.length() << endl;test = t;cout << test << endl;cout << test.length() << endl;return 0;}(2)string 到 char * 的转换:
//string to char*int CP2(){string test = "abc";char t[10];strcpy(t, test.c_str());cout << t << endl;cout << strlen(t) << endl;char *te;int number = test.length();te = new char[number + 1];cout << number << endl;/*test.copy(te, number, 0);*(te+number) = '0';cout << te << endl;*/strcpy(te, test.c_str());cout << te << endl;cout << strlen(te) << endl;delete[] te;return 0; }(3)string到const char* 的转换:
//string to const char*int CP3(){const char* c;string test = "1234";c = test.c_str();cout << c << endl;const char* t;t = test.data();cout << t << endl;return 0;}(4)int 到 string的转换:
//int to stringint CP4(){int nt = 30;char c[30];//using C template to trans from int to stringitoa(nt, c, 10);//参数3为进制,以几进制转换为 charcout << c << endl;cout << strlen(c) << endl;//using stringstream to trans from int to stringstringstream test;test << nt;string stest = test.str();cout << stest << endl;cout << stest.length() << endl;//using to_string to trans from int to string as the same double and floatstring str= to_string(nt);cout << str << endl;cout << str.length() << endl;return 0;}(5)string到int的转换:
//string to intint CP5(){string test = "17";char* t;int nt = static_cast<int>(strtol(test.c_str(), &t, 10));//10 表示转换进制cout << nt << endl;int nte;sscanf(test.c_str(), "%d", &nte);//%d 表示十进制cout << nte << endl;//using stringstream to trans from string to intstringstream stest;stest << test;int ntes;stest >> ntes;cout << ntes << endl;//using C template to trans from string to intint ntest = atoi(test.c_str());cout << ntest << endl;//using C++ template to trans from string to intint nnt;nnt = stoi(test.c_str());cout << nnt << endl;return 0;}(6)string 到 double的转换:
//string to doubleint CP6(){string test = "17.101";//using C template to trans from doubel to stringdouble t = atof(test.c_str());cout << t << endl;return 0;}
数值类型到string的转换可以有以下几种方式:
(1)使用函数模板+stringstream
(2)使用标准库函数std::to_string:
string to_string (int val);string to_string (long val);string to_string (long long val);string to_string (unsigned val);string to_string (unsigned long val);string to_string (unsigned long long val);string to_string (float val);string to_string (double val);string to_string (long double val);(3)使用C标准库函数:
atoi(str.c_str());strtoul(str.c_str(), NULL, 10);atof(str.c_str());(4)使用C++标准库函数:
stoi()
在调用windowAPI函数的时候经常会遇到char与wchar的问题,在此贴出两者之间的转换函数:
(1)string to WString
BOOL StringToWString(const std::string &str,std::wstring &wstr) { int nLen = (int)str.length(); wstr.resize(nLen,L' '); int nResult = MultiByteToWideChar(CP_ACP,0,(LPCSTR)str.c_str(),nLen,(LPWSTR)wstr.c_str(),nLen); if (nResult == 0) { return FALSE; } return TRUE; }(2)WString to string
BOOL WStringToString(const std::wstring &wstr,std::string &str) { int nLen = (int)wstr.length(); str.resize(nLen,' '); int nResult = WideCharToMultiByte(CP_ACP,0,(LPCWSTR)wstr.c_str(),nLen,(LPSTR)str.c_str(),nLen,NULL,NULL); if (nResult == 0) { return FALSE; } return TRUE; }(3)String to Wstring
std::wstring StringToWString(const std::string &str) { std::wstring wstr(str.length(),L' '); std::copy(str.begin(), str.end(), wstr.begin()); return wstr; }(4) Wstring to string
std::string WStringToString(const std::wstring &wstr) { std::string str(wstr.length(), ' '); std::copy(wstr.begin(), wstr.end(), str.begin()); return str; }
阅读全文
1 0
- C++类型转换小结
- c# 类型转换小结
- java-类型转换小结
- 类型转换小结
- c++强制类型转换小结
- 【转】C++类型转换小结
- C++类型转换之小结
- c++强制类型转换小结
- C++中的类型转换小结
- python中的一些类型转换函数小结
- c++中强制类型转换操作符小结
- c++中强制类型转换操作符小结
- c++中强制类型转换操作符小结--使用
- Java类型转换在函数参数中的小结
- C++风格的强制类型转换之小结
- c++中强制类型转换操作符小结
- 关于结构体指针类型转换的小结
- 复制构造函数、重载赋值运算符、类型转换小结
- 如何实现微信小程序与.net core应用服务端的无状态身份验证
- 欢迎使用CSDN-markdown编辑器
- javascript中call()的用法举例
- jupyter notebook 架设在服务器 本地用浏览器访问服务器上的jupyter
- 使用java语言爬取网络图片并下载到本地
- 类型转换小结
- 设置tableview 的section不停靠
- 一篇讲透Kubernetes与GlusterFS之间的爱恨情仇
- git fetch & pull
- 如何用WebSocket实现一个简单的聊天室以及单聊功能
- 切割图片
- 高数 01.10闭区间上连续函数的性质
- 集合嵌套及遍历,随机数
- JQ模拟下拉框多选