[英]How to concatenate a const char array and a char array pointer?
直接从事业务:我的代码大致如下所示:
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
好吧,您使用的是C ++,因此您应该使用std::stringstream
:
std::string assemble(int param)
{
std::stringstream ss;
ss << "Foo" << doSomething(param) << "bar";
return ss.str();
}; // eo assemble
"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;
}
"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*
的函数有问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.