ฉันกำลังอ่าน Accelerated C ++ โดย Koenig เขาเขียนว่า "แนวคิดใหม่คือเราสามารถใช้ + เพื่อเชื่อมสตริงและสตริงลิเทอรัล - หรือสำหรับสสารนั้นสองสตริง (แต่ไม่ใช่สองสตริงลิเทอรัล)
ดีนี่ก็สมเหตุสมผลแล้วที่ฉันคิดว่า ตอนนี้เป็นแบบฝึกหัดสองแบบแยกกันเพื่อให้ความสว่างนี้
คำจำกัดความต่อไปนี้ถูกต้องหรือไม่?
const string hello = "Hello";
const string message = hello + ",world" + "!";
ตอนนี้ฉันพยายามดำเนินการข้างต้นแล้วและได้ผล! ฉันก็เลยมีความสุข
จากนั้นฉันก็พยายามทำแบบฝึกหัดต่อไป
const string exclam = "!";
const string message = "Hello" + ",world" + exclam;
สิ่งนี้ไม่ได้ผล ตอนนี้ฉันเข้าใจแล้วว่ามีบางอย่างที่เกี่ยวข้องกับการที่คุณไม่สามารถเชื่อมต่อตัวอักษรสองสตริงได้ แต่ฉันไม่เข้าใจความแตกต่างทางความหมายระหว่างสาเหตุที่ฉันจัดการให้ตัวอย่างแรกทำงานได้ (ไม่ใช่ "โลก" และ "! "ตัวอักษรสตริงสองตัวหรือไม่สิ่งนี้ควรใช้ไม่ได้หรือไม่) แต่ไม่ใช่อย่างที่สอง
"Hello" + ", world!"
เมื่อคุณทำได้"Hello, world!"
. ตามปกติ C ++ มีวิธีแก้ปัญหาที่ง่ายและยอดเยี่ยมสำหรับปัญหาที่รับรู้ :-)
"Hello" ", world!"
(โดยไม่มี+
) มีข้อร้องเรียนหลายประการที่สามารถทำได้เกี่ยวกับ C ++ แต่ฉันไม่คิดว่าการจัดการที่นี่เป็นหนึ่งในนั้น มันเหมือนกับที่คุณเขียน1 / 3 + 1.5
และบ่นเพราะการหารเป็นส่วนหนึ่ง เพื่อให้ดีขึ้นหรือแย่ลงนี่เป็นวิธีการทำงานของภาษาส่วนใหญ่
"hello" " world" == "hello world"
ประโยชน์ถ้าคุณต้องเขียนสตริงยาว ๆ และไม่ต้องการให้มันออกไปนอกหน้าต่างหรือคุณต้องการอยู่ในความยาวของเส้นที่ จำกัด หรือหากมีการกำหนดสตริงอย่างใดอย่างหนึ่งในมาโคร
const string message = "Hello" ",world" + exclam
(เช่นการละเว้นข้อแรก+
) shoud ทำงานได้ดี