C++ では、double、a、char *
またはの間の暗黙的な変換はありませんstd::string
。
res_array[i] + " "
に double を追加しようとしているchar *
ため、コンパイラは暗黙的な変換を試みますが、何も存在しないため、operator+
数値型が必要であるというエラーが表示されます。
代わりに、明示的に文字列に変換する必要がありres_array[i]
ます。
// File: convert.h
#include <iostream>
#include <sstream>
#include <string>
#include <stdexcept>
class BadConversion : public std::runtime_error {
public:
BadConversion(std::string const& s)
: std::runtime_error(s)
{ }
};
inline std::string stringify(double x)
{
std::ostringstream o;
if (!(o << x))
throw BadConversion("stringify(double)");
return o.str();
}
上記の例は The C++ FAQ からのものです。このトピックに特化したスタックオーバーフローの質問がたくさんありますが、TC++FAQ は OG であるという真の叫びに値します :)
または C++11 では、次を使用しますstd::to_string
strarr[i] = std::to_string(res_array[i]) + " " + fileNamesVector[i];