<!DOCTYPE html>
	<html lang="vi" xmlns="http://www.w3.org/1999/xhtml" prefix="og: http://ogp.me/ns#">
	<head>
<title>&#91;C++ Cơ bản&#93; Phần 7&#x3A; Input - Output</title>
<meta name="description" content="&#91;C++ Cơ bản&#93; Phần 7&#x3A; Input - Output - Savefile - Tin Tức - https&#x3A;&#x002F;&#x002F;tinhocdct.xyz&#x002F;savefile&#x002F;hoat-dong-chuyen-mon&#x002F;c-co-ban-phan-7-input-output-99.html">
<meta name="author" content="TỔ TIN HỌC TRƯỜNG THPT ĐỖ CÔNG TƯỜNG">
<meta name="copyright" content="TỔ TIN HỌC TRƯỜNG THPT ĐỖ CÔNG TƯỜNG [webmaster@tinhocdct.xyz]">
<meta name="robots" content="index, archive, follow, noodp">
<meta name="googlebot" content="index,archive,follow,noodp">
<meta name="msnbot" content="all,index,follow">
<meta name="generator" content="NukeViet v4.0">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta property="og:title" content="&#91;C++ Cơ bản&#93; Phần 7&#x3A; Input - Output">
<meta property="og:type" content="website">
<meta property="og:description" content="Savefile - Tin Tức - https&#x3A;&#x002F;&#x002F;tinhocdct.xyz&#x002F;savefile&#x002F;hoat-dong-chuyen-mon&#x002F;c-co-ban-phan-7-input-output-99.html">
<meta property="og:site_name" content="TỔ TIN HỌC TRƯỜNG THPT ĐỖ CÔNG TƯỜNG">
<meta property="og:url" content="https://tinhocdct.xyz/hoat-dong-chuyen-mon/c-co-ban-phan-7-input-output-99.html">
<link rel="shortcut icon" href="https://tinhocdct.xyz/favicon.ico">
<link rel="canonical" href="https://tinhocdct.xyz/hoat-dong-chuyen-mon/c-co-ban-phan-7-input-output-99.html">
<link rel="alternate" href="https://tinhocdct.xyz/rss/" title="Tin Tức" type="application/rss+xml">
<link rel="alternate" href="https://tinhocdct.xyz/rss/tin-tuc/" title="Tin Tức - TIN TỨC" type="application/rss+xml">
<link rel="alternate" href="https://tinhocdct.xyz/rss/thong-cao-bao-chi/" title="Tin Tức - THÔNG BÁO" type="application/rss+xml">
<link rel="alternate" href="https://tinhocdct.xyz/rss/ban-tin-noi-bo/" title="Tin Tức - BẢN TIN NỘI BỘ" type="application/rss+xml">
<link rel="alternate" href="https://tinhocdct.xyz/rss/tin-cong-nghe/" title="Tin Tức - CÔNG NGHỆ - KHOA HỌC" type="application/rss+xml">
<link rel="alternate" href="https://tinhocdct.xyz/rss/thu-thuat/" title="Tin Tức - THỦ THUẬT" type="application/rss+xml">
<link rel="alternate" href="https://tinhocdct.xyz/rss/tien-ich/" title="Tin Tức - TIỆN ÍCH" type="application/rss+xml">
<link rel="alternate" href="https://tinhocdct.xyz/rss/ai/" title="Tin Tức - AI" type="application/rss+xml">
<link rel="alternate" href="https://tinhocdct.xyz/rss/khoa-hoc/" title="Tin Tức - KHOA HỌC" type="application/rss+xml">
<link rel="alternate" href="https://tinhocdct.xyz/rss/hoat-dong-chuyen-mon/" title="Tin Tức - HOẠT ĐỘNG CHUYÊN MÔN" type="application/rss+xml">
<link rel="alternate" href="https://tinhocdct.xyz/rss/hoat-dong-cong-doan/" title="Tin Tức - CÔNG ĐOÀN" type="application/rss+xml">
<link rel="alternate" href="https://tinhocdct.xyz/rss/hoat-dong-doan-the/" title="Tin Tức - ĐOÀN THỂ" type="application/rss+xml">
<link rel="alternate" href="https://tinhocdct.xyz/rss/tuyen-sinh-huong-nghiep/" title="Tin Tức - TUYỂN SINH - HƯỚNG NGHIỆP" type="application/rss+xml">
<link rel="alternate" href="https://tinhocdct.xyz/rss/tuyen-sinh-2025/" title="Tin Tức - TUYỂN SINH 2025" type="application/rss+xml">
<link rel="alternate" href="https://tinhocdct.xyz/rss/lich-cong-tac-tuan/" title="Tin Tức - Lịch công tác tuần" type="application/rss+xml">
<link rel="preload" as="script" href="https://tinhocdct.xyz/assets/js/jquery/jquery.min.js">
<link rel="preload" as="script" href="https://tinhocdct.xyz/assets/js/language/vi.js">
<link rel="preload" as="script" href="https://tinhocdct.xyz/assets/js/global.js">
<link rel="preload" as="script" href="https://tinhocdct.xyz/themes/default/js/news.js">
<link rel="preload" as="script" href="https://tinhocdct.xyz/themes/default/js/main.js">
<link rel="preload" as="script" href="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1816161148536198">
<link rel="preload" as="script" href="https://tinhocdct.xyz/themes/default/js/bootstrap.min.js">
<link rel="StyleSheet" href="https://tinhocdct.xyz/assets/css/font-awesome.min.css">
<link rel="StyleSheet" href="https://tinhocdct.xyz/themes/default/css/bootstrap.non-responsive.css">
<link rel="StyleSheet" href="https://tinhocdct.xyz/themes/default/css/style.css">
<link rel="StyleSheet" href="https://tinhocdct.xyz/themes/default/css/style.non-responsive.css">
<link rel="StyleSheet" href="https://tinhocdct.xyz/themes/default/css/news.css">
<style>
	body{background: #fff;}
</style>
	</head>
	<body>
<div id="print">
	<div id="hd_print">
		<h2 class="pull-left">TỔ TIN HỌC TRƯỜNG THPT ĐỖ CÔNG TƯỜNG</h2>
		<p class="pull-right"><a title="TỔ TIN HỌC TRƯỜNG THPT ĐỖ CÔNG TƯỜNG" href="https://tinhocdct.xyz/">https://tinhocdct.xyz</a></p>
	</div>
	<div class="clear"></div>
	<hr />
	<div id="content">
		<h1>&#91;C++ Cơ bản&#93; Phần 7&#x3A; Input - Output</h1>
		<ul class="list-inline">
			<li>Thứ tư - 07/04/2021 11:26</li>
			<li class="hidden-print txtrequired"><em class="fa fa-print">&nbsp;</em><a title="In ra" href="javascript:;" onclick="window.print()">In ra</a></li>
			<li class="hidden-print txtrequired"><em class="fa fa-power-off">&nbsp;</em><a title="Đóng cửa sổ này" href="javascript:;" onclick="window.close()">Đóng cửa sổ này</a></li>
		</ul>
		<div class="clear"></div>
		<div id="hometext">
			Nhập và xuất là hai yếu tố vô cùng cơ bản của một chương trình. Trong những bài viết trước của C++ Cơ bản, chúng ta đã sử dụng cout để in thông tin ra màn hình console. Bài viết này và bài viết sau sẽ dành ra để giải thích cụ thể về input và output trong C++.
		</div>
				<div class="imghome">
			<img alt="&#91;C++ Cơ bản&#93; Phần 7&#x3A; Input - Output" src="https://tinhocdct.xyz/uploads/news/2021_04/cpp-co-ban-1-3.jpg" width="460" class="img-thumbnail" />
		</div>
		<div class="clear"></div>
		<div id="bodytext" class="clearfix">
			<h1 id="tóm-tắt-nhanh-về-thư-viện-stdioh-của-c"><span style="font-size:14px;"><em>Phần trước:&nbsp;<a href="http://tinhocdct.xyz/hoat-dong-chuyen-mon/c-co-ban-phan-6-bien-global-va-bien-local-98.html" target="_blank">&#91;C++ Cơ bản&#93; Phần 6: Biến global và biến local</a></em></span><br  />
Tóm tắt nhanh về thư viện&nbsp;<code>stdio.h</code>&nbsp;của C</h1>

<p>Thư viện&nbsp;<code>stdio.h</code>&nbsp;và các hàm&nbsp;<code>scanf()</code>,&nbsp;<code>printf()</code>&nbsp;là phương pháp input - output tiêu chuẩn của C. C++ thừa hưởng tất cả các tài nguyên của C, do đó chúng cũng có thể được sử dụng trong C++. Tuy nhiên series bài viết này sẽ không đi sâu vào thư viện này vì:</p>

<ul>
	<li>Cú pháp của các hàm&nbsp;<code>scanf()</code>&nbsp;và&nbsp;<code>printf()</code>&nbsp;phức tạp hơn so với&nbsp;<code>cin</code>&nbsp;và&nbsp;<code>cout</code>&nbsp;của C++.</li>
	<li><code>cin</code>&nbsp;và&nbsp;<code>cout</code>&nbsp;là phương pháp input và output chuẩn của C++.</li>
</ul>

<p>Bạn có thể nghe nói rằng&nbsp;<code>cin</code>&nbsp;và&nbsp;<code>cout</code>&nbsp;chậm hơn&nbsp;<code>scanf()</code>&nbsp;và&nbsp;<code>printf()</code>.&nbsp;<a href="http://codeforces.com/blog/entry/5217" target="_blank">Điều này là đúng</a>, bởi vì chúng phải đồng bộ hóa luồng nhập xuất với thư viện&nbsp;<code>stdio.h</code>&nbsp;để chương trình có thể sử dụng cả hai thư viện của C và C++. Tuy nhiên trong áp dụng thực tế, chênh lệch này&nbsp;<strong>có thể tạm bỏ qua được</strong>, trừ khi bạn thật sự cần tốc độ xử lý cao (như khi lập trình thi đấu). Khi đó bạn có thể tắt đồng bộ hóa bằng việc sử dụng lệnh:</p>

<pre>
<code>iostream::sync_with_stdio(false);
</code></pre>

<p>Lưu ý rằng kể cả sau khi áp dụng&nbsp;<code>iostream::sync_with_stdio(false)</code>, tốc độ của&nbsp;<code>cin/cout</code>&nbsp;vẫn có thể chậm hơn đáng kể so với&nbsp;<code>scanf()/printf()</code>&nbsp;trên một số bộ dịch, nhưng nhìn chung thì điều này không quá ảnh hưởng tới việc lập trình thi đấu. Mục đích chính của các kì thi phần lớn là để kiểm tra kĩ năng thuật toán, cho dù kĩ năng tối ưu hóa vẫn là hết sức quan trọng.</p>

<h1 id="các-thư-viện-nhậpxuất-của-c">Các thư viện nhập/xuất của C++</h1>

<p>Nhập/xuất của C++ diễn ra theo các stream (luồng), là các dãy byte được gửi tới (từ thiết bị nhập xuất, từ các file, vv…) và gửi đi (tới các thiết bị hiển thị như màn hình, loa, vv…) từ chương trình.</p>

<p>C++ có ba thư viện quan trọng cho việc nhập/xuất:</p>

<table>
	<tbody>
		<tr>
			<th>Thư viện</th>
			<th>Chức năng</th>
		</tr>
		<tr>
			<td><code>iostream</code></td>
			<td>Định nghĩa các đối tượng&nbsp;<code>cin</code>,&nbsp;<code>cout</code>,&nbsp;<code>cerr</code>,&nbsp;<code>clog</code>, tương ứng với các stream input, output, stream báo lỗi không buffer và có buffer.</td>
		</tr>
		<tr>
			<td><code>iomanip</code></td>
			<td>Định nghĩa các hàm để tùy chỉnh lại dữ liệu nhập xuất, ví dụ như chỉnh sửa độ chính xác của số thập phân được in ra, chỉnh sửa hệ cơ số của số được in ra (thập phân, bát phân, …), vân vân…</td>
		</tr>
		<tr>
			<td><code>fstream</code></td>
			<td>Thư viện này liên quan tới việc xử lý với file. Sẽ được giải thích trong bài viết sau.</td>
		</tr>
	</tbody>
</table>

<p>Để khai báo sử dụng thư viện, ta sử dụng cú pháp:</p>

<figure>
<pre>
<code data-lang="c++">#include &lt;tên_thư_viện&gt;</code></pre>
</figure>

<p>Chú ý không cần sử dụng dấu chấm phẩy.</p>

<h2 id="buffer-là-gì">Buffer là gì?</h2>

<p>Buffer là một vùng nhớ tạm thời của hệ thống, dành cho việc tạm thời lưu trữ dữ liệu của chương trình trước khi di chuyển tới một vùng khác. Đối với input và output, buffer giống như việc lưu trữ tất cả các nội dung cần được nhập và xuất, trước khi được nhập vào hoặc xả ra.</p>

<h1 id="cout"><code>cout</code></h1>

<p><code>cout</code>&nbsp;là một đối tượng thuộc class&nbsp;<code>ostream</code>.&nbsp;<code>cout</code>&nbsp;được kết nối với các đối tượng đầu ra tiêu chuẩn, ví dụ như màn hình console của hệ điều hành. Ta sử dụng&nbsp;<code>cout</code>&nbsp;với toán tử chèn dữ liệu vào stream (stream insertion)&nbsp;<code>&lt;&lt;</code>&nbsp;(hai dấu nhỏ hơn).</p>

<p><strong>Chú ý:</strong>&nbsp;Ở đây mình có nói tới class&nbsp;<code>ostream</code>. Class và các nội dung của lập trình hướng đối tượng sẽ được giới thiệu kĩ hơn ở các bài sau. Hiện tại, hãy tạm hiểu class là một kiểu dữ liệu được người dùng định nghĩa, khác với các kiểu dữ liệu nguyên thủy như&nbsp;<code>int</code>,&nbsp;<code>float</code>,&nbsp;<code>double</code>, vv…</p>

<p><img alt="" height="122" src="https://tinhocdct.xyz/uploads/news/2021_04/hinh-4.png" width="550" /><br  />
Output:</p>

<pre>
<code>Xin chào Việt Nam
</code></pre>

<p>Toán tử&nbsp;<code>&lt;&lt;</code>&nbsp;có thể được sử dụng nhiều lần trong một câu lệnh&nbsp;<code>cout</code>, như ở ví dụ trên.</p>

<p>C++ cho phép người dùng in ra các giá trị thuộc các kiểu dữ liệu có sẵn&nbsp;<code>int</code>,&nbsp;<code>float</code>,&nbsp;<code>double</code>,&nbsp;<code>char</code>,&nbsp;<code>string</code>&nbsp;và các giá trị con trỏ.</p>

<p><code>cout</code>&nbsp;là phương pháp output có sử dụng buffer.</p>

<h1 id="cin"><code>cin</code></h1>

<p><code>cin</code>&nbsp;là một đối tượng thuộc class&nbsp;<code>istream</code>.&nbsp;<code>cin</code>&nbsp;được kết nối với các đối tượng đầu vào tiêu chuẩn, ví dụ như bàn phím. Ta sử dụng&nbsp;<code>cin</code>&nbsp;với toán tử lấy dữ liệu từ stream (stream extraction)&nbsp;<code>&gt;&gt;</code>&nbsp;(hai dấu lớn hơn).</p>

<p><img alt="" height="169" src="https://tinhocdct.xyz/uploads/news/2021_04/hinh-5.png" width="550" /><br  />
Bộ dịch C++ sẽ tự động nhận ra kiểu dữ liệu của biến được đặt sau toán tử, và lựa chọn phương pháp nhập dữ liệu phù hợp với kiểu dữ liệu đó.</p>

<p>Toán tử&nbsp;<code>&gt;&gt;</code>&nbsp;cũng có thể được sử dụng nhiều lần trong một câu lệnh.</p>

<p><code>cin</code>&nbsp;là phương pháp input có sử dụng buffer.</p>

<h1 id="cerr-và-clog"><code>cerr</code>&nbsp;và&nbsp;<code>clog</code></h1>

<p><code>cerr</code>&nbsp;và&nbsp;<code>clog</code>&nbsp;là hai đối tượng của class&nbsp;<code>ostream</code>&nbsp;giống như&nbsp;<code>cout</code>. Về mặc định, chúng cũng được kết nối với các đối tượng đầu ra tiêu chuẩn như&nbsp;<code>cout</code>, và cũng sử dụng chung toán tử&nbsp;<code>&lt;&lt;</code>&nbsp;như&nbsp;<code>cout</code>.</p>

<p>Điểm khác biệt giữa&nbsp;<code>cerr</code>&nbsp;và&nbsp;<code>clog</code>&nbsp;là&nbsp;<code>cerr</code>&nbsp;không được buffer, còn&nbsp;<code>clog</code>&nbsp;thì có. Điều này có nghĩa là tất cả nội dung của&nbsp;<code>cerr</code>&nbsp;sẽ được in ra ngay lập tức, trong khi&nbsp;<code>clog</code>&nbsp;sẽ được lưu trữ lại cho tới khi buffer đầy hoặc được giải phóng (do người dùng tự giải phóng, khi có dữ liệu xuất ra mới và cần in ra dữ liệu cũ, hoặc khi chương trình kết thúc).</p>

<p><code>cerr</code>&nbsp;và&nbsp;<code>clog</code>&nbsp;được sử dụng nhiều vào việc in ra các thông báo lỗi. Khi xây dựng các dự án lớn với C++, chúng sẽ trở nên vô cùng quan trọng, vì ta có thể thay đổi luồng ra của output (<code>cout</code>) ra riêng với các thông báo lỗi (<code>cerr</code>&nbsp;và&nbsp;<code>clog</code>) để quan sát riêng rẽ.</p>

<p><em>Phần sau:<a href="http://tinhocdct.xyz/hoat-dong-chuyen-mon/c-co-ban-phan-8-input-va-output-tiep-100.html" target="_blank">&nbsp;&#91;C++ Cơ bản&#93; Phần 8: Input và Output (tiếp)</a></em></p>
		</div>
				<div id="author">
						<p>
				<strong>Tác giả bài viết:</strong>
				Thanh Sơn
			</p>
						<p>
				<strong>Nguồn tin:</strong>
				cowboycoder.tech
			</p>
		</div>
	</div>
	<div id="footer" class="clearfix">
		<div id="url">
			<strong>URL của bản tin này: </strong><a href="https://tinhocdct.xyz/hoat-dong-chuyen-mon/c-co-ban-phan-7-input-output-99.html" title="&#91;C++ Cơ bản&#93; Phần 7&#x3A; Input - Output">https://tinhocdct.xyz/hoat-dong-chuyen-mon/c-co-ban-phan-7-input-output-99.html</a>

		</div>
		<div class="clear"></div>
		<div class="copyright">
			&copy; TỔ TIN HỌC TRƯỜNG THPT ĐỖ CÔNG TƯỜNG
		</div>
		<div id="contact">
			<a href="mailto:webmaster@tinhocdct.xyz">webmaster@tinhocdct.xyz</a>
		</div>
	</div>
</div>
        <div id="timeoutsess" class="chromeframe">
            Bạn đã không sử dụng Site, <a onclick="timeoutsesscancel();" href="https://tinhocdct.xyz/#">Bấm vào đây để duy trì trạng thái đăng nhập</a>. Thời gian chờ: <span id="secField"> 60 </span> giây
        </div>
        <div id="openidResult" class="nv-alert" style="display:none"></div>
        <div id="openidBt" data-result="" data-redirect=""></div>
<script src="https://tinhocdct.xyz/assets/js/jquery/jquery.min.js"></script>
<script>var nv_base_siteurl="/",nv_lang_data="vi",nv_lang_interface="vi",nv_name_variable="nv",nv_fc_variable="op",nv_lang_variable="language",nv_module_name="news",nv_func_name="savefile",nv_is_user=0, nv_my_ofs=-4,nv_my_abbr="EDT",nv_cookie_prefix="nv4",nv_check_pass_mstime=1738000,nv_area_admin=0,nv_safemode=0,theme_responsive=0,nv_is_recaptcha=0;</script>
<script src="https://tinhocdct.xyz/assets/js/language/vi.js"></script>
<script src="https://tinhocdct.xyz/assets/js/global.js"></script>
<script src="https://tinhocdct.xyz/themes/default/js/news.js"></script>
<script src="https://tinhocdct.xyz/themes/default/js/main.js"></script>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1816161148536198"
     crossorigin="anonymous"></script>
<script src="https://tinhocdct.xyz/themes/default/js/bootstrap.min.js"></script>
</body>
</html>