直接开展业务:我的代码大致如此:
char* assemble(int param)
{
char* result = "Foo" << doSomething(param) << "bar";
return result;
}
现在我得到的是:
error: invalid operands of types ‘const char [4]’ and ‘char*’ to binary ‘operator<<’
修改
doSomething
会返回char*
。
那么,我如何连接这两个?
其他信息:
编译器:GNU / Linux 2.6.32-5-amd64上的g ++ 4.4.5
答案 0 :(得分:3)
嗯,你正在使用C ++,所以你应该使用std::stringstream
:
std::string assemble(int param)
{
std::stringstream ss;
ss << "Foo" << doSomething(param) << "bar";
return ss.str();
}; // eo assemble
答案 1 :(得分:2)
"Foo"
和"Bar"
是文字,他们没有插入(<<
)运算符。
std::string
:
std::string assemble(int param)
{
std::string s = "Foo";
s += doSomething(param); //assumes doSomething returns char* or std::string
s += "bar";
return s;
}
答案 2 :(得分:1)
"Foo"
和"bar"
的类型为char const[4]
。从错误消息,
我认为表达式doSomething(param)
的类型为char*
(这是可疑的 - 如果有一个案例,这是非常特殊的
函数可以合理地返回char*
)。这些类型都不是
支持<<
。
你在这里处理不支持的C样式字符串
连接(至少不合理)。在C ++中,连接
字符串上的运算符是+
,而不是<<
,并且您需要C ++字符串
工作:
std::string result = std::string( "Foo" ) + doSomething( param ) + "bar";
(一旦第一个参数为std::string
,隐式转换就会出现
春天生效转换其他人。)
但我会看一下doSomething
函数。这里有些不对劲
使用返回char*
的函数。