Thắc mắc về kiểu char

Đề: nhập vô là aaabbc thì nó sẽ là 3a2bc còn aaabaac thì nó sẽ là 3ab2ac
mấy cái ký tự như 3,2 thì sẽ là số k;
Đề là như thế nhưng em thắc mắc ở chỗ là khi mà em tham khảo thì kq += char (k) thì nó lại sai còn kq+=char (k+‘0’) thì nó lại ra được số k. Tại sao vậy ạ. Mọi người giải thích giúp em. Em cảm ơn. :sunny:

string lineEncoding(string s)
{ 
    string kq=""; 
    for (int i = 0; i<s.length();i++) {
        int k=1; 
        int n = i; 
        while (s[i]==s[i+1]) {
		    i++;  
            k++; 
        }
        if (k==1) kq+=s[n]; 
       else {
           kq+=char(k +'0'); 
           kq+=s[n]; 
       } 
    }
    return kq; 
}

Từ khoá: Mã ASCII
Với k kiểu int, char(k) được sử dụng để ép kiểu từ int sang kiểu kí tự char. Ví dụ k = 32 thì ép sang kiểu char sẽ thành dấu cách ' '. Chuyển đổi như thế nào thì tìm theo key ASCII là có.


kq += char(k) sẽ thêm vào kq kí tự thứ k trong bảng mã ASCII. Kí tự này không phải là kí tự số k nhé.
kq += char(k + '0') sẽ thêm vào kq kí tự thứ k tính từ kí tự ‘0’ trong bảng mã ASCII. Đây chính là kí tự số k.


Chốt lại thì 0 và ‘0’ là 2 cái khác nhau.
Nói chung là tìm hiểu về bảng mã ASCII là sẽ biết những cái đó để làm gì.

6 Likes

Okkk, thanks anh nhieu :smiley: :sunny:

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