char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
cout<<greeting + "and there \n"; //will not compile because concat does \n not work on old C style string
string trueString = string (greeting);
cout << trueString + "and there \n"; // compiles fine
cout << trueString + 'c'; // this will be fine too. if one of the operand if C++ string, this will work too
8条答案
按热度按时间6yt4nkrj1#
首先,不要使用
char*
或char[N]
。使用std::string
,那么其他的一切都变得如此简单!例如,
很简单,不是吗?
现在,如果出于某种原因需要
char const *
,例如当您想传递给某个函数时,则可以执行以下操作:假设该函数声明为:
从这里开始探索
std::string
:8yparm6h2#
既然是C++,为什么不用
std::string
代替char*
呢?bcs8qyzn3#
如果你用C语言编程,那么假设
name
确实是一个固定长度的数组,你必须做如下的事情:现在你明白为什么大家都推荐
std::string
了吧?exdqitrt4#
移植的C库中有一个strcat()函数,它将为您执行“C样式字符串”连接。
顺便说一句,尽管C++有一堆函数来处理C风格的字符串,但它可能会对您有所帮助,您可以尝试并提出自己的函数来处理这些字符串,例如:
...然后...
......其结果是
file_name.txt
。您也可能会尝试编写自己的
operator +
,但是不允许只使用指针作为参数的IIRC运算符重载。另外,不要忘记,在这种情况下,结果是动态分配的,所以您可能希望对它调用delete以避免内存泄漏,或者您可以修改函数以使用堆栈分配的字符数组,当然前提是它具有足够的长度。
sbdsn5lh5#
C++14语言
对问题的回答:
crcmnpdw6#
strcat(destination,source)在c++中可以用来连接两个字符串。
要深入了解,您可以在以下链接中查找-
http://www.cplusplus.com/reference/cstring/strcat/
gcmastyq7#
最好用C++字符串类代替老式的C字符串,这样生活会轻松很多。
如果您有现有旧样式字符串,则可以转换为字符串类
xzlaal3s8#