none
问一个有关于std::string转double的问题 RRS feed

  • 问题

  • rt,有谁能告诉我实现代码?用流来格式化似乎不管用。还有,请不要自己写类、模板等来实现,谢谢。
    2011年7月25日 11:20

答案

全部回复

  • atof(string::c_str()); ??
    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    2011年7月26日 1:13
    版主
  • 该怎样控制有效位数呢?好像内置6位吧,我想把它设置成我想要的任意位数,可以实现吗?
    2011年7月28日 7:10
  • 你好,

     

    利用atofstring进行转换并不限定在6位。你得到的只有6位,可能是由于你输出方式造成的。您可以参考一下代码:

    #include <string>

    #include <iostream>

     

    using namespace std;

     

    void main()

    {

                    string value = "12345.67844449";

                    double tmp;

                    tmp = atof(value.c_str());

                    double t = tmp;                 //  你可以从监视窗口中看到此时t的值12345.678444490000

                    char str[30];                       

                    sprintf(str,"%.12lf",t);    //  double 转换为char[]

                    cout << str << endl;         //   此时在控制台输出的结果为12345.678444490000

    }

     

    希望我的回答能够帮助您解决您的问题


    Rob Pan [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年8月3日 7:24
  • vs2010增加了一些函数,其中有一个:

    double stod (
            const string& _Str,
            size_t *_Idx = 0
        );

    你直接使用这个函数就可以达到目的,记得包含<string>

    http://msdn.microsoft.com/zh-cn/library/hd5zecz6.aspx


    2011年8月3日 14:13