如何连接常量字符数组和字符数组指针

How to concatenate a const char array and a char array pointer?

本文关键字:字符 数组 指针 常量 何连接 连接      更新时间:2023-10-16

直接进入业务:我的代码大致如下所示:

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*

那么,我该如何连接这两者呢?

附加信息:
编译器:g++ 4.4.5 on GNU/Linux 2.6.32-5-amd64

好吧,你正在使用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* 的函数。