1

したがって、基本的にこれは、コード内で問題が発生している場所です。

#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<_Elem,_Traits> &std::operator <<(std::basic_ostream<_Elem,_Traits> &&,_Ty)': 'std::basic_ostream<_Elem,_Traitsのテンプレート引数を推定できませんでした> 'std::string' からの &&'

...それは矢印のある線を指しています。私は何を間違っていますか?

4

3 に答える 3

2

std::stringstreamまたはを使用しboost::lexical_castます。

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

またはstd::to_stringC++ 11を使用できる場合

于 2012-07-22T02:22:52.597 に答える
1

以下を試してください: -

std::ostringstream strs;
strs << dbl;
std::string str = strs.str();
于 2012-07-22T02:20:52.467 に答える
1

stringの代わりにa を使用しようとしています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);
于 2012-07-22T02:21:05.673 に答える