zoukankan      html  css  js  c++  java
  • 44、数值型数据与字符串的相互转换

    数字与字符的相互转换,通常情况下atoi,itoa,但是,这有两个问题,一是:

    1)只能是intchar的转换,也就是说,数据最大值应当小于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;

    }

    当然,上述表达中,要保证从文件中读到的数据是满足你的要求的。

  • 相关阅读:
    怎样运用Oracle的BFILE
    第一个博客
    返回引用的函数
    c++之SQLite的增删改查
    sqlite命令行程序说明
    CreateProcess函数详解
    注册窗口类
    radio button的用法
    跨线程使用CSocket
    关于socket的connect超时的问题
  • 原文地址:https://www.cnblogs.com/mydomain/p/2136142.html
Copyright © 2011-2022 走看看