📜  如果我们在C++中连接两个字符串字面量,会发生什么?

📅  最后修改于: 2021-05-30 06:30:01             🧑  作者: Mango

如果要使用C++执行串联,则必须牢记以下几点:

  • 如果a + b是显示字符串连接的表达式,则表达式的结果将是’a’中字符的副本,然后是’b’中字符的副本。
  • ‘a’或’b’可以是字符串字面量,也可以是char类型的值,但不能同时是两者。这就是为什么以下串联不会引发错误,而在上面的串联会引发错误的原因。

例如:

Input : "geeks"+"forgeeks"
Output : It will not compile, an error will be thrown.

情况1:由于上述原因,我们无法连接以下表达式:

"geeks" + "forgeeks" + geekstring  

在这里,+的左联想也起着产生错误的作用,因为+被左联想,所以第一个“怪胎” +“怪胎”将串联在一起,这将产生上述误差。

情况2:我们可以串联以下内容:

geekstring + "geeks" + "forgeeks" 

在这里,左联想将不会产生错误,因为它将连接geekstring和“ geeks”,使其不成为字面量,然后将添加“ forgeeks”,并且不会产生错误。

Input : geekstring = "geeks"
Input : geekstring + "forgeeks"
Output: geeksforgeeks
// Program to illustrate two string
// literal can not be concatenate
#include 
using namespace std;
int main()
{
    string geekstring = "geeks";
    cout << geekstring + "forgeeks" << endl;
  
    // while this will not work
    // cout<<"geeks" + "forgeeks";
  
    // this will work
    cout << geekstring + "forgeeks" + " Hello";
  
    // but again this will not work
    // cout<<"forgeeks" + "hello" + geekstring;
    return 0;
}

输出:

geeksforgeeks
geeksforgeeks Hello
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”