繁体   English   中英

如何连接一个const char数组和一个char数组指针?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM