在字符串末尾添加一个double(C ++)

时间:2012-07-22 02:18:01

标签: c++ string operator-overloading double

所以,基本上这实际上是我的代码中出现问题的地方。

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <cstring>

void main()
{
    double k = 10.0;
    string out;
    out = "V";
    out += ".";
    out << k;   <---
}

我尝试编译,但是我收到了这个错误:

错误C2784:'std :: basic_ostream&lt; _Elem,_Traits&gt; &amp; std :: operator&lt;&lt;(std :: basic_ostream&lt; _Elem,_Traits&gt;&amp;&amp;,_ Ty)':无法推断'std :: basic_ostream&lt; _Elem,_Traits&gt;的模板参数&安培;&安培;”来自'std :: string'

...指向带有箭头的线。我做错了什么?

3 个答案:

答案 0 :(得分:2)

使用std::stringstreamboost::lexical_cast

out += boost::lexical_cast<std::string>(k);

std::to_string如果可以使用C ++ 11

答案 1 :(得分:1)

请尝试以下方法: -

std::ostringstream strs;
strs << dbl;
std::string str = strs.str();

答案 2 :(得分:1)

您正尝试使用string代替stringstream。没有定义操作符<<string作为其第一个参数,这是编译器试图告诉你的内容(以一种相当神秘的方式)。

stringstream out;
out << "V." << k;
string s = out.str();

如果您使用的是C ++ 11,可以这样写:

double k = 10.0;
string out;
out = "V";
out += ".";
out += to_string(k);