如何连接常量字符数组和字符数组指针
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*
。
那么,我该如何连接这两者呢?
附加信息:
编译器: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*
的函数。
相关文章:
- 指向指向字符数组的指针数组的指针
- 比较字符数组
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 使用无符号字符数组有效存储内存
- 错误:字符数组的初始值设定项太多
- 对字符数组中的元素执行逐位操作
- C++ 无法在字符数组中使用 for 循环打印字母模式
- 如何在 C++ 中从文件中读取字符数组(带有一些空格)
- C++ 传递二维字符数组
- 无法在 C++ 中输入字符数组
- 字符数组中的元素数
- 我的目标是编写一个程序来计算和存储字符串在字符数组中出现的位置
- 使用字符数组作为 Map 中的键
- C++:__aligned(__alignof__) 导致字符数组数据出现问题?
- 按顺序声明的字符数组重叠
- 在 C++ 中字符串的大小与字符数组的大小
- 寻找一种更好的方法来表示无符号字符数组
- 如何打印 2D 字符数组C++
- 从字符数组的元素中减去'a'是什么意思
- 我是否不正确地集中了这些字符数组?