错误C2297:'<<' :非法,右操作数有'double'类型

时间:2011-03-15 07:10:02

标签: c++

string mesag="";
mesag="aDoubleArray value at 0------->"<<aDoubleArray[0]<<"   aDoubleArray value at 1 is "<<aDoubleArray[1];
addLog(AMR_LT_WARN, mesag);// this part not working 
addLog(AMR_LT_WARN, "this works well");

我不知道关于c ++的任何事情只是想将aDoubleArray值打印到日志文件但它会抛出  错误C2297:'&lt;&lt;' :非法,右操作数类型为'double'

3 个答案:

答案 0 :(得分:3)

您需要使用字符串流来完成此操作。包含sstream,您可以执行以下操作:

#include <iostream>
#include <sstream>
int main(void) {
    double d = 3.14159;         // this is the double.
    std::stringstream ss;       // this is the stream.
    ss << "Double is " << d;    // Send normal output to stream.
    std::cout << "["            // Use str() to get underlying string.
              << ss.str()
              << "]"
              << std::endl;
    return 0;
}

这将字符串流设置为包含"Double is 3.14159"并输出括在方括号中的内容:

[Double is 3.14159]

答案 1 :(得分:1)

您正在处理“aDoubleArray值为0 --------&gt;”作为一个流。 Const字符串不是输入流。查看http://www.fredosaurus.com/notes-cpp/strings/stringstream.html,因为字符串流可能就是您想要的。

答案 2 :(得分:0)

您必须执行以下操作:

char message[100];
sprintf(message, "aDoubleArray value at 0-------> %g   aDoubleArray value at 1 is %g", aDoubleArray[0], aDoubleArray[1]);

std::string mesag(message);
addLog(AMR_LT_WARN, mesag);// this part not working 
addLog(AMR_LT_WARN, "this works well");