C++中各种数据类型之间的转换
2017-11-13 14:52
615 查看
C++中各种数据类型之间的转换:
1.int 转 string:
注意stringstream 流只能单次使用,
即一次只能将一个int变量输入转为
string变量输出,不可以重复使用。
语法:
比如:最好不要这样:
char* c;
string s=”1234”;
c = s.c_str(); //c最后指向的内容是垃圾,因为s对象被析构,其内容被处理
应该这样用:
char c[20];
string s=”1234”;
strcpy(c,s.c_str());
这样才不会出错,c_str()返回的是一个临时指针,不能对其进行操作
再举个例子
c_str() 以 char* 形式传回 string 内含字符串
如果一个函数要求char*参数,可以使用c_str()方法:
string s = “Hello World!”;
printf(“%s”, s.c_str()); //输出 “Hello World!”
2.各种基本数据类型
int /long /long long / unsigned /unsigned long/unsigned long long/
/float /double/long double
转为string 类型。
编程:
注意,这个也是c++11标准
setw(20)对其后面的str变量起作用,也就是设置str输出的时候占据20字节,
setfill(‘‘)将前面的空格以‘’填充。配合使用。
都需要包含头文件 “#include ”
具体函数:
总结,一般的话,用C++11标准中的 to_string()函数 和对应的 stoi() 等函数。
不能用c++11标准的时候,用str.c_str() 结合atoi() 、atof() 函数来使用。
string 转其他类型: 即int n=atoi(str.c_str()) ; double db=atof(str.c_str());
其他类型转string:
最后,C++中字符数组和string 类型如何相互转化呢?
如上,把字符数组直接当成string 类型的变量来操作即可。
编程:
如上,注意,需要包含头文件#include
1.int 转 string:
1.使用sstream 编程:
#include <sstream> #include <string> #include <iostream> using namespace std; int main() { int m; stringstream ss; cin>>m; string str; ss<<m; ss>>str; cout<<str<<endl; return 0; }
注意stringstream 流只能单次使用,
即一次只能将一个int变量输入转为
string变量输出,不可以重复使用。
2.C++11中的库函数to_string() 1.c语言<stdlib.h> 编程:
#include<string> #include<stdlib.h> #include<iostream> using namespace std; int main() { string str="234"; int n=atoi(str.c_str()); cout<<n<<endl; }
语法:
const char *c_str(); c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同. 这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。 注意:一定要使用strcpy()函数 等来操作方法c_str()返回的指针
比如:最好不要这样:
char* c;
string s=”1234”;
c = s.c_str(); //c最后指向的内容是垃圾,因为s对象被析构,其内容被处理
应该这样用:
char c[20];
string s=”1234”;
strcpy(c,s.c_str());
这样才不会出错,c_str()返回的是一个临时指针,不能对其进行操作
再举个例子
c_str() 以 char* 形式传回 string 内含字符串
如果一个函数要求char*参数,可以使用c_str()方法:
string s = “Hello World!”;
printf(“%s”, s.c_str()); //输出 “Hello World!”
2.C++11中的stoi() #include<iostream> #include<string> using namespace std; int main(){ string str="234"; int n=stoi(str); cout<<n<<endl; return 0; } 注意,因为是c++11的标准 编译时候的格式: g++ test.cpp -o test -std=c++11
2.各种基本数据类型
int /long /long long / unsigned /unsigned long/unsigned long long/
/float /double/long double
转为string 类型。
1.std命令空间下有一个C++标准库函数std::to_string(), 可用于将数值类型转换为string。使用时需要include头文件<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);
编程:
#include<iostream> #include<string> using namespace std; int main(){ string str; int n=123; str=to_string(n); cout<<str<<endl; return 0; }
注意,这个也是c++11标准
#include<iostream> #include<string> #include <iomanip> using namespace std; int main(){ string str; double n=123.233; str=to_string(n); cout<<setfill('*')<<setw(20)<<str<<endl; return 0; }
setw(20)对其后面的str变量起作用,也就是设置str输出的时候占据20字节,
setfill(‘‘)将前面的空格以‘’填充。配合使用。
都需要包含头文件 “#include ”
2.使用c标准函数库 包含头文件 #include <stdlib.h>
具体函数:
string -> int : atoi(str.c_str()) string -> unsigned int : strtoul(str.c_str(),NULL,10) string ->long long int: atoi(str.c_str()) string ->unsigned long long int : strtoull(str.c_str(),NULL,0) string -> float / double : atof(str.c_str()) string -> long double : strtold(str.c_str())
3.使用c++11标准中引入的c++库函数:
string str; stoi(str) stol(str) stoul(str) stoll(str) stoull(str) stof(str) stod(str) stold(str)
总结,一般的话,用C++11标准中的 to_string()函数 和对应的 stoi() 等函数。
不能用c++11标准的时候,用str.c_str() 结合atoi() 、atof() 函数来使用。
string 转其他类型: 即int n=atoi(str.c_str()) ; double db=atof(str.c_str());
其他类型转string:
最后,C++中字符数组和string 类型如何相互转化呢?
1.字符数组转化为string 类型: 编程:
#include<iostream> #include<string> using namespace std; int main(){ string str; char ch[]="abcdefg"; str=ch; cout<<str<<endl; return 0; }
如上,把字符数组直接当成string 类型的变量来操作即可。
2.string 类型转化为字符数组类型:
编程:
#include<iostream> #include<string> #include <cstring> using namespace std; int main(){ string str("abcdefg"); char buf[10]; strcpy(buf,str.c_str()); cout<<buf[5]<<endl; return 0; }
如上,注意,需要包含头文件#include
相关文章推荐
- 用标准C++进行string与各种内置类型数据之间的转换
- C++各种数据类型之间的转换
- 用标准C++进行string与各种内置类型数据之间的转换
- 使用C++ 标准库 stringstream实现各种数据类型之间的转换
- 用标准C++进行string与各种内置类型数据之间的转换
- 用标准C++进行string与各种内置类型数据之间的转换
- 源码:C++中的各种字符类型之间的转换
- C++ 如何:在各种字符串类型之间进行转换
- OC各种数据类型之间的转换方法
- 【转】Symbian C++ 各种类型之间的转换
- Symbian C++ 各种类型之间的转换
- C++中不同数据类型之间的相互转换
- Windows,C++中各种数据类型的转换---很有用!
- C++中不同类型数据之间的转换(调用库函数)
- 各种数据类型之间的转换
- 利用C++的stringstream对各种数据类型转换
- OC各种数据类型之间的转换方法
- Symbian C++ 各种类型之间的转换!!
- (转)OC各种数据类型之间的转换方法
- VC中各种数据类型之间的转换