44、数值型数据与字符串的相互转换
2011-08-12 14:40
267 查看
数字与字符的相互转换,通常情况下atoi,itoa,但是,这有两个问题,一是:
(1)只能是int与char的转换,也就是说,数据最大值应当小于2G。
(2)在linux中,没有itoa。
那么如何解决数据最大值大于2G,及大于2G后数值型数据与字符间的转换呢?
(1)从数值数据转换成字符型数据,sprintf
unsigned int low = 4294967295;
sprintf(line, "%u", low);
str = line;
ofm.write(str.data(), str.size());
ofm.put('\n');
这样便写入到文件中了。
(2)字符串型数据转换成数据型,流字符串
此时,使用atoi已不能正确转换,因为int的最大正整数为2G,此时,我们使用流字符串。
unsigned int from_str(const std::string& s)
{
std::istringstream is(s);
unsigned int t;
is >> t;
return t;
}
//...
while(ifm.getline(c, 32))
{
str = c;
unsigned int i = from_str(str);
cout << i << endl;
}
当然,上述表达中,要保证从文件中读到的数据是满足你的要求的。
(1)只能是int与char的转换,也就是说,数据最大值应当小于2G。
(2)在linux中,没有itoa。
那么如何解决数据最大值大于2G,及大于2G后数值型数据与字符间的转换呢?
(1)从数值数据转换成字符型数据,sprintf
unsigned int low = 4294967295;
sprintf(line, "%u", low);
str = line;
ofm.write(str.data(), str.size());
ofm.put('\n');
这样便写入到文件中了。
(2)字符串型数据转换成数据型,流字符串
此时,使用atoi已不能正确转换,因为int的最大正整数为2G,此时,我们使用流字符串。
unsigned int from_str(const std::string& s)
{
std::istringstream is(s);
unsigned int t;
is >> t;
return t;
}
//...
while(ifm.getline(c, 32))
{
str = c;
unsigned int i = from_str(str);
cout << i << endl;
}
当然,上述表达中,要保证从文件中读到的数据是满足你的要求的。
相关文章推荐
- Unicode字符串与Unicode数据的相互转换
- 关于数据和字符串之间相互转换的说明
- Java中 基本数据类型与封装类、字符串的相互转换 方法汇总
- C语言十六进制数据同字符串的相互转换
- js中json数据和字符串之间的相互转换
- android开发中遇到的进制转换,16进制数据流转和字符串的相互转换
- JS解析json数据(json字符串和数组之间相互转换)
- 基于Swift的iOS应用程序开发:字符串String与Data数据类型相互转换
- C++ 字符串与数值型的相互转换
- 【Java】基本数据类型与封装类、字符串的相互转换
- [Tip: _itow]数值和字符串相互转换(C++ 数据类型转换技巧)
- 导出数据时,将数值型转换为字符串
- 数值和字符串相互转换(C++ 数据类型转换技巧)
- python基础数据结构——列表(list), 元祖(tuple), 字典(dict), 字符串(string), 集合(set) 介绍及相互转换
- 字节数据与十六进制的相互转换,字符串与十六进制的相互转换
- json数组与json字符串的相关问题(相互转换、解析json数据)
- 速战速决 (6) - PHP: 获取 http 请求数据, 获取 get 数据 和 post 数据, json 字符串与对象之间的相互转换
- MFC中CString类字符串与长整型、浮点型数据之间的相互转换
- 基本数据类型和字符串的相互转换
- 基本数据类型和字符串相互转换