c++中字符串能简单相加吗?
追问:上例2中的"Hello"和",world"不仅可视为char[]型,它们同时也是C风格字符串,在这里应该也可视为string型常量,因此例2中的字符串型符号常量"message"可视为两个字符串型常量和一个符号常量值,也就是三个字符串型字面常量之和;照你那么说,是能用“+”操作实现的;而且我想问如果是string与char[]相加是string类型,还是char[]型,还是两种都可以?
追问:上例2中的"Hello"和",world"不仅可视为char[]型,它们同时也是C风格字符串,在这里应该也可视为string型常量,因此例2中的字符串型符号常量"message"可视为两个字符串型常量和一个符号常量值,也就是三个字符串型字面常量之和;照你那么说,是能用“+”操作实现的;而且我想问如果是string与char[]相加是string类型,还是char[]型,还是两种都可以?
答案:推荐楼主看这个例子:这是《Accelerated C++》一书的第一章的课后题 - 下面的编译是否有问题?
1:
const std::string hello = “Hello”;
const std::string message = hello + “, world” + “!”;2:
const std::string exclam = “!”;
const std::string message = “Hello” + “, world” + exclam;第一部分是可以编译成功的,而第二部分是不行的。为什么?
因为在第二部分的第二句,赋值号的右边 先做”Hello” + “,world” 操作,而对于”Hello”和”,world”都是const char[]类型的,在标准C++中这个类型是不能做 “+”操作的。
而对于第一部分,hello + “,world”可以进行成功操作,因为hello为std::string类型,对于这种类型,标准库中重载了其与char[]类型之间的”+”操作符,所以是可以的,并且返回值是std::string类型,当然再与右面的exclam操作也没问题了。对于string类型的“+”操作符,在标准库中重载了string与string的+操作,string与char[]的+操作,以及string与char的+操作。也就是说’x'+hello也是可以的。
所以,为什么两个直接字符串不能相加?很简单一句话,因为C++标准库中没有实现“+”号对于char[]类型的重载以支持char[] + char[]操作。如果你在自己的程序中自己实现,也是可以的。
不过要是C语言的话,用字符串连接就能做到,字符串操作语句,你可以在百度搜搜 很多例子,若有疑问,请追问,望采纳
不能的绝对可以相加。我在POJ混了很久了!
望采纳,谢谢!
可以。是可以的,但是要事先定义字符串的长度才行,还有就是、0的问题字符串两种1) string 2) char a[100]也就是说一种字符串,一种字符数组。前者可以相加,后者不可以MFC 中可以 但是在C++ 源程序中师部可以的。那得定义数组还定义字符串...可以 但是在C++ 源程序中师部可以的。C++的DOS界面编程不行。
而在MFC可视化编程中是可以的。主要是MFC的库文件中已经把 + 这些一般运算符做了重载(这是C++函数重载的部分,学了之后就会明白了),也就是重先定义了"+"这个运算符(实际上这是函数),使它具有strcat()函数相同的功能。
上一个:求高手用C++编写下面程序
下一个:C++中的继承、派生