Tôi đang đọc Accelerated C ++ của Koenig. Ông viết rằng "ý tưởng mới là chúng ta có thể sử dụng + để nối một chuỗi và một chuỗi theo nghĩa đen - hoặc, đối với vấn đề đó, hai chuỗi (nhưng không phải là hai ký tự chuỗi).
Tốt thôi, tôi cho là có lý. Bây giờ chuyển sang hai bài tập riêng biệt nhằm làm sáng tỏ điều này.
Các định nghĩa sau đây có hợp lệ không?
const string hello = "Hello";
const string message = hello + ",world" + "!";
Bây giờ, tôi đã cố gắng thực hiện ở trên và nó đã hoạt động! Vì vậy, tôi đã rất vui.
Sau đó, tôi cố gắng làm bài tập tiếp theo;
const string exclam = "!";
const string message = "Hello" + ",world" + exclam;
Điều này đã không hoạt động. Bây giờ tôi hiểu nó có liên quan đến thực tế là bạn không thể nối hai chuỗi ký tự, nhưng tôi không hiểu sự khác biệt về ngữ nghĩa giữa lý do tại sao tôi quản lý để lấy ví dụ đầu tiên hoạt động (không phải là ", world" và "! "hai ký tự chuỗi? Điều này không nên đã hoạt động?) nhưng không phải là thứ hai.
"Hello" + ", world!"
khi bạn có thể làm được "Hello, world!"
. Như thường lệ, C ++ có một cách giải quyết tuyệt vời và đơn giản cho một vấn đề được nhận thức. :-)
"Hello" ", world!"
(không có +
) hơn. Có một số phàn nàn về C ++, nhưng tôi không nghĩ việc xử lý ở đây là một trong số đó. Nó giống hệt như khi bạn viết 1 / 3 + 1.5
, và phàn nàn vì phép chia là phép chia tích phân. Dù tốt hơn hay tệ hơn, đây là cách hoạt động của hầu hết các ngôn ngữ.
"hello" " world" == "hello world"
này hữu ích nếu bạn phải viết một chuỗi dài và không muốn nó đi ra khỏi cửa sổ của bạn hoặc bạn muốn ở trong một số giới hạn độ dài dòng. Hoặc nếu một trong các chuỗi được xác định trong macro.
const string message = "Hello" ",world" + exclam
(ví dụ: bỏ qua đầu tiên+
) công việc tốt.