Kí tự kết thúc chuỗi trong C++ là gì?

Các bác cho e hỏi trong C thì kết thúc 1 chuỗi là '\0', còn C++ là gì vậy ạ?

Giống C luôn là ‘\0’

vậy sao khi code c chẳng hạn ntn

char s[] = "0123456789";
s[5] = '\0';
prinft("%s", 01234);

ta sẽ đc 01234

còn c++

string s = "0123456789"
s[5] = '\0';
cout << s;

lại là 01234 6789 , và cả hàm length() cũng vậy, chả có nhẽ nó đếm cả kí tự NULL ???

2 Likes

Vì c++ string là class có thuộc tính chiều dài chuỗi. Khi gán s[4]=’\0’ nó không làm thay đổi thuộc tính đó nên hàm cout và length in theo chiều dài ban đầu

Vậy làm sao để giảm độ dài của chuỗi ạ?

Có thể dùng resize ( tăng,giảm kích thước) pop_back (xoá kí tự cuối), erase( xoá vị trí hoặc 1 đoạn)

2 Likes

cái chỗ này mình thấy cứ thế nào ấy.

char s = "0123456789"; (s có phải là 1 KÍ TỰ?)
s[5] = '\0';
prinft("%s", 01234); (cái này thì nó chỉ cho in ra 01234 thôi chứ có liên quan gì đến s đâu nhi?)

1 Like

prinft("%s", 01234) dòng này mình viết nhầm
prinft("%s", s) thì nó in ra 01234

string s=“thanhdat”
cout << s << endl;
output: thanhdat
s[3]=’\0’;
cout << s << endl;
output: tha

Bác thử xem có ra vậy k? :smile:

nhầm :1234:
hahahahhahaha

mình thấy nói sao sao á.
ví dụ char s[100];
s[0]=‘a’;
s[1]=‘b’;
s[2]=‘c’;
cout; sẽ lỗi
nếu khai char s[]=“abc”;
thì nó sẽ lưu trong mảng ký tự này là ‘a’ ‘b’ ‘c’ ‘\0’ nên cout; chạy vô tư :slight_smile:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?