tek4

Xâu ký tự trong C++

by - September. 26, 2021
Kiến thức
Học
<p>Trong b&agrave;i viết n&agrave;y, ta sẽ c&ugrave;ng t&igrave;m hiểu c&aacute;ch xử l&yacute; c&aacute;c x&acirc;u k&yacute; tự trong C++, c&aacute;ch khai b&aacute;o, khởi tạo v&agrave; sử dụng cho c&aacute;c hoạt động nhập v&agrave; xuất.</p> <p>X&acirc;u k&yacute; tự trong C++ hoặc chuỗi k&yacute; tự l&agrave; một tập hợp c&aacute;c k&yacute; tự. C&oacute; hai loại chuỗi thường được sử dụng trong ng&ocirc;n ngữ lập tr&igrave;nh C ++:</p> <ol> <li>C&aacute;c x&acirc;u k&yacute; tự l&agrave; đối tượng của một lớp (Lớp chuỗi trong thư viện C ++ Chuẩn)</li> <li>X&acirc;u k&yacute; tự trong lập tr&igrave;nh C.</li> </ol> <h2>Kh&aacute;i niệm</h2> <p>Trong lập tr&igrave;nh C, chuỗi k&yacute; tự l&agrave; một tập hợp c&aacute;c k&yacute; tự được lưu trữ dưới dạng mảng, điều n&agrave;y cũng được hỗ trợ trong lập tr&igrave;nh C ++. Do đ&oacute;, n&oacute; được gọi l&agrave; C-string. C-string l&agrave; một mảng kiểu char được kết th&uacute;c bằng k&yacute; tự null, hay \ 0 (gi&aacute; trị ASCII của k&yacute; tự null l&agrave; 0).</p> <h2>L&agrave;m thế n&agrave;o để định nghĩa một chuỗi k&yacute; tự C?</h2> <p>V&iacute; dụ:</p> <pre class="language-cpp"><code>char chuoi_ky_tu[] = "Xin chao";</code></pre> <p>Trong đoạn m&atilde; tr&ecirc;n, chuoi_ky_tu l&agrave; một x&acirc;u k&yacute; tự v&agrave; n&oacute; chứa 8 k&yacute; tự. Mặc d&ugrave;, "Xin chao" c&oacute; 8 k&yacute; tự, nhưng k&yacute; tự rỗng \0 sẽ tự động được th&ecirc;m v&agrave;o cuối chuỗi.</p> <p>Ta c&oacute; thể định nghĩa cho một chuỗi k&yacute; tự theo c&aacute;c c&aacute;ch sau:</p> <ul> <li>char chuoi_ky_tu [8] = "Xin chao";</li> <li>char chuoi_ky_tu [] = {'X', 'i', 'n', ' ', 'c', 'h', 'a', 'o', '\0'};</li> <li>char chuoi_ky_tu [8] = {'X', 'i', 'n', ' ', 'c', 'h', 'a', 'o', '\0'};</li> </ul> <p>V&iacute; dụ: Hiển thị một chuỗi do người d&ugrave;ng nhập v&agrave;o.</p> <pre class="language-cpp"><code>#include &lt;iostream&gt; using namespace std; int main(){ char str[20]; cout &lt;&lt; "Nhap ten cua ban: "; cin &gt;&gt; str; cout &lt;&lt; "Xin chao " &lt;&lt; str &lt;&lt; "!"&lt;&lt; endl; cout &lt;&lt; "Nhap ten cua ban mot lan nua: "; cin &gt;&gt; str; cout &lt;&lt; "Xin chao " &lt;&lt; str &lt;&lt; "!"&lt;&lt; endl; return 0; }</code></pre> <p>Kết quả:</p> <pre class="language-markup"><code>Nhap ten cua ban: hieu Xin chao hieu! Nhap ten cua ban mot lan nua: minh hieu Xin chao minh!</code></pre> <p>Lưu &yacute; rằng, trong lần nhập thứ hai chỉ hiển thị "minh" thay v&igrave; "minh hieu". To&aacute;n tử nhập &gt;&gt; hoạt động giống với scanf () trong C v&agrave; coi khoảng trắng " " l&agrave; k&yacute; tự kết th&uacute;c. Do đ&oacute; n&oacute; chỉ nhận chuỗi &ldquo;minh&rdquo;</p> <p>V&iacute; dụ 2: Đọc một d&ograve;ng văn bản</p> <pre class="language-cpp"><code>#include &lt;iostream&gt; using namespace std; int main(){ char ten[30]; cout &lt;&lt; "Nhap ho va ten cua ban: "; cin.get(ten, 30); cout &lt;&lt; "Xin chao " &lt;&lt; ten &lt;&lt;"!"&lt;&lt; endl; return 0; }</code></pre> <p>Kết quả:</p> <pre class="language-markup"><code>Nhap ho va ten cua ban: tran A Xin chao tran A!</code></pre> <p>Để đọc một chuỗi k&yacute; tự c&oacute; khoảng trống, ta sẽ sử dụng h&agrave;m <strong>cin.get</strong>. H&agrave;m n&agrave;y c&oacute; hai tham số như sau:</p> <ol> <li>Tham số đầu ti&ecirc;n l&agrave; t&ecirc;n của chuỗi v&agrave; tham số thứ hai l&agrave; k&iacute;ch thước tối đa của chuỗi.</li> <li>Trong chương tr&igrave;nh tr&ecirc;n, ten l&agrave; một chuỗi k&yacute; tự v&agrave; 30 l&agrave; k&iacute;ch thước tối đa của chuỗi đ&oacute;.</li> </ol> <h2>Đối tượng String</h2> <p>Trong C ++, ta cũng c&oacute; thể tạo một đối tượng string để lưu trữ chuỗi k&yacute; tự. Kh&ocirc;ng giống như sử dụng mảng char, c&aacute;c đối tượng string kh&ocirc;ng c&oacute; độ d&agrave;i cố định v&agrave; c&oacute; thể được mở rộng theo nhu cầu của người lập tr&igrave;nh.</p> <p>V&iacute; dụ:</p> <pre class="language-cpp"><code>#include &lt;iostream&gt; using namespace std; int main(){ string ten; cout &lt;&lt; "Nhap ho va ten: "; getline(cin, str); cout &lt;&lt; "Xin chao " &lt;&lt; str &lt;&lt; endl; return 0; }</code></pre> <p>Trong chương tr&igrave;nh tr&ecirc;n, một x&acirc;u k&yacute; tự ten được khai b&aacute;o. Sau đ&oacute;, chuỗi được nhập từ người d&ugrave;ng. Thay v&igrave; sử dụng h&agrave;m cin &gt;&gt; hoặc cin.get (), ta c&oacute; thể lấy d&ograve;ng k&yacute; tự đ&atilde; nhập bằng h&agrave;m getline (). H&agrave;m getline () lấy một luồng dữ liệu đầu v&agrave;o l&agrave;m tham số đầu ti&ecirc;n ,đ&oacute; ch&iacute;nh l&agrave; cin v&agrave; ten l&agrave; địa chỉ của lưu trữ của k&yacute; tự đ&atilde; nhập.</p> <h2>Truyền chuỗi k&yacute; tự cho một h&agrave;m</h2> <p>C&aacute;c chuỗi k&yacute; tự được truyền v&agrave;o một h&agrave;m theo c&aacute;ch tương tự như mảng.</p> <p>V&iacute; dụ:</p> <pre class="language-cpp"><code>#include &lt;iostream&gt; using namespace std; void in_chuoi_ky_tu(char a[]){ cout &lt;&lt; a; } void in_chuoi_ky_tu(string a){ cout &lt;&lt; a; } int main(){ string chuoi_ky_tu; char chuoi_ky_tu2[30]; cout &lt;&lt; "Nhap chuoi dau tien: "; getline(cin, chuoi_ky_tu); cout &lt;&lt; "Nhap chuoi thu hai: "; cin.get(chuoi_ky_tu2, 30, '\n'); in_chuoi_ky_tu(chuoi_ky_tu2); cout &lt;&lt; endl; in_chuoi_ky_tu(chuoi_ky_tu); return 0; }</code></pre> <p>Kết quả:</p> <pre class="language-markup"><code>Nhap chuoi dau tien: Xin chao A! Nhap chuoi thu hai: Xin chao B! Xin chao B! Xin chao A!</code></pre> <p>Trong chương tr&igrave;nh tr&ecirc;n, hai chuỗi được y&ecirc;u cầu nhập. Ch&uacute;ng được lưu trữ trong chuoi_ky_tu v&agrave; chuoi_ky_tu2 tương ứng, trong đ&oacute; chuoi_ky_tu l&agrave; một đối tượng string v&agrave; chuoi_ky_tu2 l&agrave; một mảng kiểu dữ liệu char với độ l&agrave; 30 phần tử. Sau đ&oacute;, ch&uacute;ng ta định nghĩa 2 h&agrave;m in_chuoi_ky_tu () để xuất ra chuỗi k&yacute; tự.</p> <p>Sự kh&aacute;c biệt duy nhất giữa hai h&agrave;m số c&oacute; c&ugrave;ng t&ecirc;n l&agrave; in_chuoi_ky_tu ch&iacute;nh l&agrave; tham số. H&agrave;m in_chuoi_ky_tu () đầu ti&ecirc;n nhận mảng char l&agrave;m tham số, trong khi h&agrave;m thứ hai nhận đối tượng string l&agrave;m tham số. 2 h&agrave;m n&agrave;y được gọi l&agrave; nạp chồng nhau.</p> <hr /> <p style="text-align: center;"><em><strong>Fanpage Facebook:</strong>&nbsp;<a href="https://www.facebook.com/tek4.vn/">TEK4.VN</a></em>&nbsp;</p> <p style="text-align: center;"><em><strong>Tham gia cộng đồng để chia sẻ, trao đổi v&agrave; thảo luận:</strong>&nbsp;<a href="https://www.facebook.com/groups/tek4.vn/">TEK4.VN - Học Lập Tr&igrave;nh Miễn Ph&iacute;</a></em></p>