Cách sử dụng C ++ String Literal

How Use C String Literal



Bàn phím máy tính có các ký tự được in trên chúng. Khi bạn bấm một phím, bạn sẽ thấy ký tự trên màn hình. Lưu ý: dấu cách cũng là một ký tự. Một chuỗi ký tự là một chuỗi các ký tự. Bài viết này giải thích cách sử dụng chuỗi ký tự C ++. Bạn nên biết về mảng và con trỏ C ++ để hiểu bài viết này.

Character Literal

Một ký tự theo nghĩa đen là một ký tự trong dấu ngoặc kép. Vì thế,







charnhận dạng1= 'ĐẾN'; chardanh tính2= 'NS'; charnhận dạng3= '4'; charnhận dạng4= '6';

là tất cả các định nghĩa khác nhau về ký tự. Lưu ý rằng một chữ số trong dấu ngoặc kép là một ký tự chứ không phải số nguyên.



Một chuỗi thoát, chẳng hạn như (xem bên dưới) trong dấu ngoặc kép, là một ký tự. Vì thế,



charnhận dạng1= '' ';

là một nhân vật.





Một ký hiệu đơn trong dấu ngoặc kép không phải là một ký tự; nó là một chuỗi gồm một ký tự. Vì vậy, A hoặc c hoặc 2 không phải là một ký tự mà là một chuỗi mỗi ký tự.

Biến của một char có thể được gán lại sau này trong chương trình, như sau:



chardanh tính= 'NS';
danh tính= 'VÀ';

Để ngăn một ký tự được gán cho một số nhận dạng không bị thay đổi, sau đó trong chương trình, hãy đặt trước định nghĩa bằng từ dành riêng, const, như sau:

hăng sô chardanh tính= 'NS';

Biến, danh tính được cho là chỉ đọc.

Chuỗi chữ

Một chuỗi ký tự là một chuỗi các ký tự trong dấu ngoặc kép. Vì thế,

charnhận dạng1[] = 'Tôi yêu em'; chardanh tính2[] = 'Tôi ghét 3 người trong số các bạn'; charnhận dạng3[]
= 'chúng ta là thế giới'; charnhận dạng4[] = 'Chào thế giới!';

là tất cả các định nghĩa khác nhau của chuỗi ký tự. Lưu ý việc sử dụng dấu ngoặc kép. Không có gì giống như một biến thông thường cho một chuỗi. Một chuỗi ký tự là một mảng các ký tự, trong đó thay vì phân tách bằng {}, chuỗi được phân tách bằng. Các ký tự không được phân tách bằng dấu phẩy. Bất kỳ số nào lớn hơn số ký tự trong chuỗi ký tự đều có thể được đặt trong dấu ngoặc vuông. Tuy nhiên, tốt hơn hết bạn nên để trống các dấu ngoặc vuông.

Một ký tự đơn trong dấu ngoặc kép không phải là một ký tự; nó là một chuỗi gồm một ký tự. Vì vậy, A hoặc c hoặc 2 không phải là một ký tự, mà là một chuỗi mỗi ký tự.

Một biến chuỗi không cho phép gán lại toàn bộ nghĩa đen, sau này trong chương trình - xem bên dưới. Tuy nhiên, các ký tự riêng lẻ có thể được gán lại - xem bên dưới.

Trích dẫn Đơn và Đôi trong Ký tự hoặc Văn bản

Để có một câu trích dẫn duy nhất như một nhân vật, hãy làm điều gì đó như,

chardanh tính= ' '';

Để có một dấu ngoặc kép dưới dạng một ký tự trong một chuỗi ký tự, hãy làm điều gì đó như,

chardanh tính[] = 'xa'đĩa CD';

Dấu gạch chéo ngược được sử dụng trong một chuỗi thoát, để tránh xung đột với các dấu phân cách. Để có một dấu ngoặc kép dưới dạng một ký tự, không cần dấu gạch chéo ngược: ‘‘ là được. Để có một dấu ngoặc kép trong một chuỗi ký tự, không cần dấu gạch chéo ngược: ab’cd là được.

Vì dấu gạch chéo ngược được sử dụng để thoát khỏi một ký tự, nó phải được thoát bằng dấu gạch chéo ngược khác khi được sử dụng như một ký tự hoặc trong một chuỗi ký tự.

Trình tự thoát

Trình tự thoát là một trong số:

''? \ đến NS NS NS>NS v

Mỗi chuỗi thoát thường được nhập dưới dạng ký tự trong dấu ngoặc đơn hoặc dưới dạng chuỗi thoát trong dấu ngoặc kép.

  • ’: Được sử dụng như một ký tự trích dẫn duy nhất, trong các dấu ngoặc kép.
  • : được sử dụng như một ký tự dấu ngoặc kép, trong một nghĩa đen.
  • ? : từ ? là một ký tự dành riêng, nó phải được thoát theo nghĩa đen.
  • \: dấu gạch chéo ngược phải được thoát ra dưới dạng một ký tự hoặc trong một chuỗi ký tự, để không dẫn đến một số ý nghĩa khác.
  • a: phát chuông báo thức một lần, khi được sử dụng như một ký tự hoặc trong một chuỗi ký tự.
  • b: kết quả là một khoảng trắng xóa trong màn hình trong một chuỗi ký tự, lấy đi ký tự trước đó.
  • f: khiến trang tiếp theo được nạp vào máy in khi được sử dụng dưới dạng ký tự hoặc trong một ký tự.
  • r: trả về con trỏ, nơi ký tự tiếp theo sẽ được in, nhưng nằm trong dòng hiện tại.
  • n: trả con trỏ về đầu dòng tiếp theo hoặc chỉ về dòng tiếp theo, tùy thuộc vào hệ điều hành.
  • t: tạo một tab ngang.
  • v: tạo một tab dọc.

Hoạt động với các ký tự

Sự kết hợp

Theo định nghĩa, hai ký tự chuỗi có thể được nối với khoảng trắng như sau:

chardanh tính[] = 'abc' 'def';
Giá cả<<danh tính<< ' ';

Đầu ra là: abcdef. Định nghĩa này có thể được mở rộng đến hơn hai nghĩa đen. Lưu ý: câu lệnh là một định nghĩa, không chỉ là một phép gán. Định nghĩa thậm chí có thể tiếp tục đến dòng tiếp theo với khoảng cách giữa các dòng như sau:

chardanh tính[] = 'abc' 'def'
'ghi';
Giá cả<<danh tính<< ' ';

Đầu ra là, abcdefghi.

Lưu ý: Không thể nối các ký tự theo cách này, vì các dấu ngoặc kép cho ký tự không thể có nhiều hơn một ký hiệu.

Các nhà điều hành bình đẳng

Các ký tự giống nhau ở cùng một trường hợp giống nhau. Chúng không bằng nhau nếu chúng không cùng trường hợp. Xem xét,

kết quả bool= 'NS' == 'NS';
Giá cả<<kết quả<< ' ';

== có nghĩa là bằng, trong khi = có nghĩa là được gán cho và không có nghĩa là bằng. Đầu ra là 1 cho true. Xem xét,

kết quả bool= 'NS' == 'NS';
Giá cả<<kết quả<< ' ';

Đầu ra là 0 cho sai. Xem xét,

kết quả bool= 'NS' == 'NS';
Giá cả<<kết quả<< ' ';

Đầu ra là 0 cho sai. Xem xét,

kết quả bool= 'NS' ! = 'NS';
Giá cả<<kết quả<< ' ';

! = nghĩa là không bằng, trong khi = có nghĩa là gán cho và không bằng. Đầu ra là 0 cho sai. Xem xét,

kết quả bool= 'NS' ! = 'NS';
Giá cả<<kết quả<< ' ';

Đầu ra là 1 cho true. Xem xét,

kết quả bool= 'NS' ! = 'NS';
Giá cả<<kết quả<< ' ';

Đầu ra là 1 cho true.

Vì vậy, == và! = Là các toán tử bình đẳng.

Toán tử quan hệ

Đối với các ký tự thông thường trong C ++, theo thứ tự tăng dần, các số đứng trước chữ hoa, trước chữ thường.

Vì thế= được giải thích tương tự.

Chuỗi văn bản như một đối tượng

Mảng là một con trỏ không đổi đến đầu của một chuỗi kiểu dữ liệu cụ thể. Tương tự, chuỗi là một con trỏ không đổi đến đầu một chuỗi ký tự. So sánh các định nghĩa sau:

NSarr[] = {3, 4, 5, 6, 7};
charP[] = {'trong', 'hoặc', 'NS', 'đến', 'n'};
charsọc[] = 'người đàn bà';

Mảng đầu tiên là một mảng các int và có năm phần tử. Mảng thứ hai và thứ ba là mảng ký tự có tên khác nhau, nhưng cùng số phần tử. Mảng thứ hai và thứ ba giống nhau, nhưng về tên của chúng. Nội dung văn bản của mảng thứ hai được phân cách bằng dấu ngoặc nhọn; các ký tự được phân tách bằng dấu phẩy và mỗi ký tự nằm trong dấu ngoặc kép. Nội dung văn bản của mảng thứ ba được phân tách bằng dấu ngoặc kép; các ký tự không được phân tách bằng dấu phẩy và mỗi ký tự không nằm trong dấu ngoặc kép. Mảng thứ hai và thứ ba là hai cách tạo ra một chuỗi, với cách thứ ba là cách tốt hơn.

arr là một con trỏ không đổi đến phần tử đầu tiên của mảng của nó, có nghĩa là arr sẽ luôn trỏ đến vị trí có số nguyên, 3 ngay cả khi giá trị của 3 được thay đổi. Kích thước của mảng, năm phần tử, không thực sự không đổi. Tuy nhiên, mỗi giá trị của mảng có thể được thay đổi.

str là một con trỏ hằng đến phần tử đầu tiên của mảng của nó, có nghĩa là str sẽ luôn trỏ đến vị trí có ký tự, ‘w’ ngay cả khi giá trị của ‘w’ bị thay đổi. Kích thước của mảng ký tự, năm phần tử, không thực sự không đổi. Tuy nhiên, mỗi giá trị của chữ có thể được thay đổi.

Stri là một con trỏ không đổi đến phần tử đầu tiên của chữ (mảng) của nó, có nghĩa là stri sẽ luôn trỏ đến vị trí có ký tự, w ngay cả khi giá trị của w bị thay đổi. Kích thước của chuỗi chữ (mảng), năm phần tử, không thực sự không đổi. Tuy nhiên, mỗi giá trị của chữ có thể được sửa đổi.

Hằng số trong một mảng hoặc chuỗi ký tự là gì? Địa chỉ bộ nhớ của phần tử đầu tiên của mảng hoặc chữ vẫn là giá trị của tên (mã định danh) của mảng hoặc chữ và không thể thay đổi. Chà, kích thước của mảng hoặc chữ không thực sự không đổi. Mỗi giá trị trong mảng hoặc chữ có thể được thay đổi. Đoạn mã sau cho biết phần tử thứ tư của mỗi mảng đã được thay đổi như thế nào:

NSarr[] = {3, 4, 5, 6, 7};
charP[] = {'trong', 'hoặc', 'NS', 'đến', 'n'};
charsọc[] = 'người đàn bà';

arr[3] = 9;
P[3] = 'Và';
sọc[3] = 'Và';

Giá cả<<arr[3] << ' ';
Giá cả<<P<< ' ';
Giá cả<<sọc<< ' ';

Đầu ra là:

9
phụ nữ phụ nữ
đàn bà

Lưu ý rằng các phần tử của một chuỗi được xác định theo nghĩa đen, giống như định nghĩa thứ ba ở trên, có thể được truy cập bằng chỉ số mảng (chỉ số con). Lý do cho dòng thứ hai của đầu ra được đưa ra dưới đây.

Chỉ số phụ định nghĩa

Lưu ý rằng trong các định nghĩa trên, không có số nguyên cho chỉ số con. Khi người lập trình không thể dễ dàng xác định được số phần tử, thì số nguyên cho chỉ số con nên được bỏ qua. Dù là trường hợp nào, số nguyên không được nhỏ hơn số phần tử trong mảng.

Đối với chuỗi ký tự, số nguyên phải cao hơn số ký tự trong chuỗi ít nhất 1 ký tự. Điều này là do ký tự null ( 0) luôn được trình biên dịch thêm vào, ở cuối mảng là một chuỗi, được phân tách bằng dấu ngoặc kép. Ký tự null không được thêm vào cuối mảng thứ hai ở trên, vì nó không phải là một chuỗi chính thức. Mảng thứ ba là một chuỗi chính thức. Đoạn mã sau đây hiển thị các giá trị chỉ số phụ tối thiểu.

NSarr[5] = {3, 4, 5, 6, 7};
charP[5] = {'trong', 'hoặc', 'NS', 'đến', 'n'};
charsọc[6] = 'người đàn bà';

Để làm cho định nghĩa thứ hai trở thành một chuỗi chính thức, ký tự null phải được thêm vào như sau:

NSarr[5] = {3, 4, 5, 6, 7};
charP[6] = {'trong', 'hoặc', 'NS', 'đến', 'n', ' 0'};
charsọc[6] = 'người đàn bà';

Đầu ra bây giờ phải là,

9
đàn bà
đàn bà

không có những người phụ nữ thứ hai. Lưu ý rằng chỉ số con tương ứng cho mảng thứ hai là 6 chứ không phải 5 như ban đầu.

Giá trị văn bản không đổi

Để ngăn không cho bất kỳ ký tự nào trong dấu ngoặc kép được gán cho số nhận dạng bị sửa đổi, sau đó trong chương trình, hãy đặt trước định nghĩa bằng từ dành riêng, const, như sau:

hăng sô chardanh tính[] = 'Tôi yêu em';

Thao tác với String Literals

Hoạt động bình đẳng

Các toán tử bình đẳng là == và! =. Khi các biến (định danh) của hai chuỗi được so sánh, thì con trỏ (địa chỉ) của các ký tự sẽ được so sánh; đó là sai. Để so sánh các chuỗi, các ký tự phải được so sánh, như trong đoạn mã sau:

kết quả bool= 'người đàn bà' == 'người đàn bà';
Giá cả<<kết quả<< ' ';

Đầu ra là 1 cho true. Việc so sánh được thực hiện theo kiểu từ điển, nhưng với các số đứng đầu theo thứ tự tăng dần, trước các chữ cái viết hoa, đứng trước các chữ cái viết thường. Đầu ra của đoạn mã sau là 0, cho sai.

kết quả bool= 'người đàn bà' ! = 'người đàn bà';
Giá cả<<kết quả<< ' ';

Toán tử quan hệ với String Literals

Các toán tử quan hệ không hoạt động với các ký tự chuỗi.

Raw String Literal

Một ký tự chuỗi thô, cho phép một chuỗi được hiển thị dưới dạng đã nhập, bỏ qua các chuỗi thoát và tôn trọng các dòng mới. Hãy xem xét đoạn mã sau:

charP[] =NS'(abc\d efg anh ấy
klmn '
'opq
đầu tiên) ';
Giá cả<< str << '
';

Đầu ra là:

abc \ d efg anh ấy
klmn nopq
đầu tiên

Trong mã, chuỗi thô bắt đầu bằng R, theo sau là và (. Nó kết thúc bằng) và.

Các loại văn bản chuỗi chính trong C ++

char

Kiểu char là kiểu C ++ ban đầu và thường sẽ lưu trữ một ký tự trong 8 bit.

char16_t

Điều này lưu trữ một ký tự trong 16 bit.

char32_t

Điều này lưu trữ một ký tự trong 32 bit.

wchar_t

char16_t và char32_t là các ký tự rộng. wchar_t là một ký tự rộng thuộc quyền sở hữu và được xác định bởi việc triển khai.

Phần kết luận

Một chữ ký tự là một ký tự đơn lẻ trong dấu ngoặc kép. Chuỗi thoát là một ký tự cũng có thể nằm trong dấu ngoặc kép. Một chuỗi ký tự là một chuỗi các ký tự trong dấu ngoặc kép. Một chuỗi ký tự là một mảng các ký tự kết thúc bằng 0. Các toán tử bình đẳng và quan hệ hoạt động với các ký tự. Các toán tử bình đẳng hoạt động với các ký tự chuỗi, nhưng các toán tử quan hệ không hoạt động với các ký tự chuỗi. Số nhận dạng ký tự có thể được sử dụng trong so sánh, nhưng số nhận dạng chuỗi không nên được sử dụng trong so sánh. Một ký tự chuỗi thô cho phép một chuỗi được hiển thị như đã nhập, bỏ qua các trình tự thoát và tôn trọng các dòng mới.

Chrys