{"id":369657,"date":"2024-05-21T04:08:30","date_gmt":"2024-05-21T04:08:30","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=369657"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=369657","title":{"rendered":"<span>\u0424\u0430\u0439\u043b\u043e\u0432\u044b\u0439 \u0432\u0432\u043e\u0434, \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0439 \u043f\u043e-\u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u043a\u0438<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">  \u041f\u043e\u0432\u043e\u0434\u043e\u043c \u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0438 \u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 <a href=\"https:\/\/github.com\/alextretyak\/file_for_humans\" rel=\"nofollow noopener noreferrer\">\u043c\u0438\u043d\u0438-\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 ffh<\/a> \u0441\u0442\u0430\u043b\u043e \u043e\u0434\u043d\u043e \u0438\u0437 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0437\u0430\u0434\u0430\u043d\u0438\u0439 \u043f\u043e \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d\u0435 \u2018\u042f\u0437\u044b\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u2019, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f \u0432\u0435\u0434\u0443. \u0412 \u044d\u0442\u043e\u043c \u0437\u0430\u0434\u0430\u043d\u0438\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432\u0441\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u0437 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0422\u0430\u043a \u0432\u043e\u0442, \u0443 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432, \u0432\u044b\u0431\u0440\u0430\u0432\u0448\u0438\u0445 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u044f\u0437\u044b\u043a C++ <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u044f\u0437\u044b\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u043c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u044f, \u043d\u043e \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u044e\u0442 C++ \u0438\u043b\u0438 Python<\/font><font color=\"#BFBFBF\">]<\/font>, \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u0438\u043d\u043e\u0433\u0434\u0430 \u0447\u0438\u0442\u0430\u043b\u0430\u0441\u044c \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u043b\u0438\u0448\u043d\u044f\u044f \u043f\u0443\u0441\u0442\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430. \u0412 \u043f\u0440\u043e\u0448\u043b\u044b\u0435 \u0433\u043e\u0434\u044b \u044f \u043d\u0435 \u043f\u0440\u0438\u0434\u0430\u0432\u0430\u043b \u044d\u0442\u043e\u043c\u0443 \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043d\u043e \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0440\u0430\u0437 \u0440\u0435\u0448\u0438\u043b \u0442\u0430\u043a\u0438 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u0447\u0451\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430.<a name=\"habracut\"><\/a> \u0412 \u0442\u0435\u043a\u0441\u0442\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0443 \u043c\u0435\u043d\u044f \u0431\u044b\u043b\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:  <\/p>\n<blockquote><p>\u0427\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 C++ \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434:  <\/p>\n<pre><code class=\"cpp\">std::string s; std::getline(f, s); <\/code><\/pre>\n<p>\u0427\u0438\u0442\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0438 \u0444\u0430\u0439\u043b\u0430 \u043c\u043e\u0436\u043d\u043e \u0432 \u0446\u0438\u043a\u043b\u0435 while \u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u043d\u0430 \u043a\u043e\u043d\u0435\u0446 \u0444\u0430\u0439\u043b\u0430 <code>f.eof()<\/code>.<\/p><\/blockquote>\n<p>  \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u043f\u0440\u043e\u0448\u043b\u044b\u0439 \u043c\u043d\u043e\u0433\u043e\u043b\u0435\u0442\u043d\u0438\u0439 \u043e\u043f\u044b\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 C++, \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>feof()<\/code> \u0438 <code>ifstream::eof()<\/code> \u043a\u0430\u043a-\u0442\u043e \u043e\u0431\u043e\u0448\u043b\u0438 \u043c\u0435\u043d\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u043e\u0439: \u043c\u043d\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0447\u0438\u0442\u0430\u0442\u044c \u0438\u043b\u0438 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b, \u0438\u043c\u0435\u044e\u0449\u0438\u0435 \u0447\u0451\u0442\u043a\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u0438\u043b\u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0444\u0430\u0439\u043b\u044b, \u0434\u043b\u044f \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0447\u0438\u0442\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u0446\u0435\u043b\u0438\u043a\u043e\u043c (\u0442.\u043a. \u043f\u043e\u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u043e\u0435 \u0447\u0442\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u0438 \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0438 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435). \u0418 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u044f \u0443\u0437\u043d\u0430\u043b, \u0447\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>feof()<\/code>\/<code>eof()<\/code> \u0432 C\/C++ \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043c\u044f\u0433\u043a\u043e \u0433\u043e\u0432\u043e\u0440\u044f \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0442\u0430\u043a, \u043a\u0430\u043a \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442, \u043d\u0435 \u0447\u0438\u0442\u0430\u0432\u0448\u0438\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043f\u043e \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438:  <\/p>\n<blockquote><p><i><a href=\"https:\/\/learn.microsoft.com\/en-us\/cpp\/c-runtime-library\/reference\/feof?view=msvc-170\" rel=\"nofollow noopener noreferrer\">feof | Microsoft Learn<\/a><\/i>:<\/p>\n<p>  The <code>feof<\/code> routine determines whether the end of <code>stream<\/code> has been passed. &#8230;<\/p>\n<p>  For example, if a file contains 10 bytes and you read 10 bytes from the file, <code>feof<\/code> will return 0 because, even though the file pointer is at the end of the file, you haven&#8217;t attempted to read beyond the end. Only after you try to read an 11th byte will <code>feof<\/code> return a nonzero value.  <\/p><\/blockquote>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043f\u043e\u0447\u0435\u043c\u0443 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u043e\u0433\u0434\u0430 \u0446\u0438\u043a\u043b \u0447\u0442\u0435\u043d\u0438\u044f \u0431\u044b\u043b \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043d \u043a\u0430\u043a <code>while (!f.eof()) {...std::getline(f, s);...}<\/code> \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u0438\u043d\u043e\u0433\u0434\u0430 \u0447\u0438\u0442\u0430\u043b\u0430\u0441\u044c \u043b\u0438\u0448\u043d\u044f\u044f \u043f\u0443\u0441\u0442\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430:  <\/p>\n<ul>\n<li>\u0435\u0441\u043b\u0438 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b \u043e\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u043b\u0441\u044f \u043d\u0430 \u0441\u0438\u043c\u0432\u043e\u043b \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>getline()<\/code> \u043d\u0430\u0442\u044b\u043a\u0430\u043b\u0430\u0441\u044c \u043d\u0430 \u043d\u0435\u0433\u043e \u0438 \u043f\u0440\u0435\u043a\u0440\u0430\u0449\u0430\u043b\u0430 \u0447\u0442\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430, \u043f\u0440\u0438\u0437\u043d\u0430\u043a \u043a\u043e\u043d\u0446\u0430 \u0444\u0430\u0439\u043b\u0430 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b\u0441\u044f \u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u044b\u0437\u043e\u0432 <code>eof()<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u043b <code>false<\/code>, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0430\u0441\u044c \u043b\u0438\u0448\u043d\u044f\u044f \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f \u0446\u0438\u043a\u043b\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 &#171;\u0447\u0438\u0442\u0430\u043b\u0430\u0441\u044c&#187; \u043f\u0443\u0441\u0442\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430;<\/li>\n<li>\u0435\u0441\u043b\u0438 \u0436\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b <b>\u043d\u0435<\/b> \u043e\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u043b\u0441\u044f \u043d\u0430 \u0441\u0438\u043c\u0432\u043e\u043b \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>getline()<\/code> \u043f\u0440\u0438 \u0447\u0442\u0435\u043d\u0438\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0444\u0430\u0439\u043b\u0430 \u0432 \u043f\u043e\u0438\u0441\u043a\u0430\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0430\u0442\u044b\u043a\u0430\u043b\u0430\u0441\u044c \u043d\u0430 \u043a\u043e\u043d\u0435\u0446 \u0444\u0430\u0439\u043b\u0430 \u0438 \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u0445\u043e\u0434\u043e\u043c \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b\u0430 \u043f\u0440\u0438\u0437\u043d\u0430\u043a \u043a\u043e\u043d\u0446\u0430 \u0444\u0430\u0439\u043b\u0430, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0447\u0435\u043c\u0443 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u044b\u0437\u043e\u0432 <code>eof()<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u043b <code>true<\/code> \u0438 \u0446\u0438\u043a\u043b \u043f\u0440\u0435\u043a\u0440\u0430\u0449\u0430\u043b\u0441\u044f.<\/li>\n<\/ul>\n<p>  \u0422\u0443\u0442 \u0432\u0441\u0442\u0430\u043b \u0432\u043e\u043f\u0440\u043e\u0441, \u043a\u0430\u043a \u0436\u0435 \u043c\u043d\u0435 \u043f\u0435\u0440\u0435\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b \u0432\u043e \u0432\u0441\u0435\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u0442.\u0435. \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u043e\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u043d \u043d\u0430 \u0441\u0438\u043c\u0432\u043e\u043b \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u043b\u0438 \u043d\u0435\u0442<\/font><font color=\"#BFBFBF\">]<\/font> \u0447\u0438\u0442\u0430\u043b\u0441\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e. \u041d\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 C++ \u043a\u043e\u0434. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u043e\u0436\u043d\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u043f\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c \u0442\u0430\u043a:  <\/p>\n<pre><code class=\"cpp\">std::string s; while (std::getline(f, s)) {     ... } <\/code><\/pre>\n<p>\u0412 \u0442\u0435\u043a\u0441\u0442\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u044f \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u043b \u0441\u0442\u0440\u043e\u0447\u043a\u0443, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0443\u044e \u00ab\u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u043d\u0430 \u043a\u043e\u043d\u0435\u0446 \u0444\u0430\u0439\u043b\u0430 <code>f.eof()<\/code>\u00bb, \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u0431\u0440\u0430\u0432 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0435 \u043e\u0431 <code>eof()<\/code><\/font><font color=\"#BFBFBF\">]<\/font>:  <\/p>\n<blockquote><p>\u0427\u0438\u0442\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0438 \u0444\u0430\u0439\u043b\u0430 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0432 \u0446\u0438\u043a\u043b\u0435 \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 <code>std::getline()<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <code>true<\/code>.<\/p><\/blockquote>\n<p>  \u041d\u043e \u0432\u0441\u043a\u043e\u0440\u0435 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043e\u0434\u0438\u043d \u0438\u0437 <abbr title=\"\u0435\u0441\u043b\u0438 \u043d\u0435 \u043e\u0448\u0438\u0431\u0430\u044e\u0441\u044c, \u0412\u0430\u0440\u0444\u043e\u043b\u043e\u043c\u0435\u0435\u0432 \u0412\u0430\u0434\u0438\u043c\">\u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432<\/abbr> \u043e\u0431\u0440\u0430\u0442\u0438\u043b\u0441\u044f \u043a\u043e \u043c\u043d\u0435 \u0441 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c, \u043f\u043e\u0447\u0435\u043c\u0443 \u0443 \u043d\u0435\u0433\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434:  <\/p>\n<pre><code class=\"cpp\">while (std::getline(f, s) == true) ... <\/code><\/pre>\n<p>  \u041a\u0430\u043a \u0432\u044b, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0443\u0436\u0435 \u0437\u043d\u0430\u0435\u0442\u0435, <code>std::getline(f, s)<\/code> \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0431\u0443\u043b\u0435\u0432\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442 \u043f\u043e\u0442\u043e\u043a\u0430 <code>f<\/code>, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a <code>bool<\/code>. \u041f\u0440\u0438\u0447\u0451\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u044d\u0442\u043e\u0442 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d \u043a\u0430\u043a <code>explicit<\/code>, \u0442.\u0435. \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a \u0432\u0437\u044f\u0442\u044c \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 \u043f\u043e\u0442\u043e\u043a\u0430 \u0441 <code>true<\/code>.<br \/>  \u0418 \u0432\u043e\u0442 \u0442\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a \u043a\u043e\u043d\u0444\u0443\u0437: \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u043a\u043e\u0434 <code>while (std::getline(f, s))<\/code> \u043a\u043e\u0440\u043e\u0447\u0435, \u0447\u0435\u043c <code>while (std::getline(f, s) == true)<\/code>, \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c \u0435\u0433\u043e <i>\u0441\u043b\u043e\u0432\u0430\u043c\u0438 \u043d\u0430 \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435<\/i> \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u0437\u0430\u0442\u0440\u0443\u0434\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e.  <\/p>\n<blockquote><p>\u0427\u0438\u0442\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0438 \u0444\u0430\u0439\u043b\u0430 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0432 \u0446\u0438\u043a\u043b\u0435 \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 <code>std::getline()<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u2026 \u0447\u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442? \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442 \u043f\u043e\u0442\u043e\u043a\u0430, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u044f\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a <code>bool<\/code>&#8230;<\/p><\/blockquote>\n<p>\u041d\u043e \u0432\u0435\u0434\u044c \u043d\u0443\u0436\u043d\u043e \u0434\u0430\u0442\u044c \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u043d\u0435 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <code>std::getline()<\/code>, \u0430 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u044f \u0446\u0438\u043a\u043b\u0430 \u0447\u0442\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430. \u0422.\u0435. \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 \u0442\u0430\u043a\u043e\u0433\u043e:  <\/p>\n<blockquote><p>\u0427\u0438\u0442\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0438 \u0444\u0430\u0439\u043b\u0430 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0432 \u0446\u0438\u043a\u043b\u0435 \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u044f\u0432\u043d\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043a <code>bool<\/code> \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043f\u043e\u0442\u043e\u043a\u0430, \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <code>std::getline()<\/code>, \u0434\u0430\u0451\u0442 <code>true<\/code>.<\/p><\/blockquote>\n<p>  \u042d\u0442\u0430 \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0436\u0430\u0441\u043d\u0430, \u0438 \u0435\u0441\u043b\u0438 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u043c\u0443 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044e, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434:  <\/p>\n<pre><code class=\"cpp\">while (bool(std::getline(f, s)) == true) ... <\/code><\/pre>\n<p>  \u0414\u0430, \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u043e\u2026 \u0447\u0442\u043e \u0437\u0430&#8230;??? <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u041d\u0443, \u0432\u044b \u043f\u043e\u043d\u044f\u043b\u0438.<\/font><font color=\"#BFBFBF\">]<\/font><\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u043a\u043e\u0434 <code>while (std::getline(f, s))<\/code>, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0449\u0451, \u0447\u0442\u043e \u044f\u0432\u043d\u044b\u0439\\explicit \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a <code>bool<\/code> \u0432 \u044f\u0437\u044b\u043a\u0435 C++ \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f, \u043a\u0430\u043a \u0431\u044b \u044d\u0442\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c <i>\u044f\u0432\u043d\u044b\u043c<\/i> (\u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u044f\u0432\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u043b\u044e\u0431\u043e\u043c\u0443 \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u0442\u0438\u043f\u0443).<br \/>  \u041d\u0430 Stack Overflow \u0435\u0441\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441 <a href=\"https:\/\/stackoverflow.com\/questions\/39995573\/when-can-i-use-explicit-operator-bool-without-a-cast\" title=\"&lt;- google:\u2018c++ explicit operator bool\u2019\" rel=\"nofollow noopener noreferrer\">\u2018\u041a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u0430 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u044f\u0432\u043d\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a bool?\u2019<\/a>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0412\u043e\u0442 \u043c\u043e\u0439 [\u043d\u0435\u043f\u043e\u043b\u043d\u044b\u0439\/]\u0432\u044b\u0431\u043e\u0440\u043e\u0447\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0435\u0433\u043e \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u0438\u0439:<\/b>                         <\/p>\n<div class=\"spoiler_text\">\u0412 \u043c\u043e\u0451\u043c \u043a\u043b\u0430\u0441\u0441\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e \u044f\u0432\u043d\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043a bool:  <\/p>\n<pre><code class=\"cpp\">struct T {     explicit operator bool() const { return true; } }; <\/code><\/pre>\n<p>\u0418 \u0443 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442-\u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u044d\u0442\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430:  <\/p>\n<pre><code class=\"cpp\">T t; <\/code><\/pre>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u0441\u0432\u043e\u0438\u0442\u044c \u0435\u0433\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0442\u0438\u043f\u0430 <code>bool<\/code>, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044f\u0432\u043d\u043e\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u043e\u0432:  <\/p>\n<pre><code class=\"cpp\">bool b = bool(t); <\/code><\/pre>\n<p>\u042f \u0437\u043d\u0430\u044e, \u0447\u0442\u043e \u044f \u043c\u043e\u0433\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043c\u043e\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u0431\u0435\u0437 \u044f\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u043e\u0432, \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 <code>explicit<\/code>:  <\/p>\n<pre><code class=\"cpp\">if (t)     \/* statement *\/; <\/code><\/pre>\n<p>\u0410 \u0433\u0434\u0435 \u0435\u0449\u0451 \u044f \u043c\u043e\u0433\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>t<\/code> \u043a\u0430\u043a <code>bool<\/code> \u0431\u0435\u0437 \u044f\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u043e\u0432?<\/p>\n<h4>\u041e\u0442\u0432\u0435\u0442<\/h4>\n<p>  \u0412 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u043c\u0435\u0441\u0442\u0430, \u0433\u0434\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c &#171;\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u043e \u0432 <code>bool<\/code>&#171;. \u041e\u043d\u0438 \u0434\u0435\u043b\u044f\u0442\u0441\u044f \u043d\u0430 \u0447\u0435\u0442\u044b\u0440\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0433\u0440\u0443\u043f\u043f\u044b:<\/p>\n<p>  <b>\u0423\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f<\/b>  <\/p>\n<ul>\n<li>\n<pre><code class=\"cpp\">if (t) \/* statement *\/;<\/code><\/pre>\n<\/li>\n<li>\n<pre><code class=\"cpp\">for (;t;) \/* statement *\/;<\/code><\/pre>\n<\/li>\n<li>\n<pre><code class=\"cpp\">while (t) \/* statement *\/;<\/code><\/pre>\n<\/li>\n<li>\n<pre><code class=\"cpp\">do { \/* block *\/ } while (t);<\/code><\/pre>\n<\/li>\n<\/ul>\n<p>  <b>\u0412\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/b>  <\/p>\n<ul>\n<li>\n<pre><code class=\"cpp\">!t<\/code><\/pre>\n<\/li>\n<li>\n<pre><code class=\"cpp\">t &amp;&amp; t2<\/code><\/pre>\n<\/li>\n<li>\n<pre><code class=\"cpp\">t || t2<\/code><\/pre>\n<\/li>\n<li>\n<pre><code class=\"cpp\">t ? \"true\" : \"false\"<\/code><\/pre>\n<\/li>\n<\/ul>\n<p>  <b>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438<\/b>  <\/p>\n<ul>\n<li>\n<pre><code class=\"cpp\">static_assert(t);<\/code><\/pre>\n<\/li>\n<li>\n<pre><code class=\"cpp\">noexcept(t)<\/code><\/pre>\n<\/li>\n<li>\n<pre><code class=\"cpp\">explicit(t)<\/code><\/pre>\n<\/li>\n<li>\n<pre><code class=\"cpp\">if constexpr (t)<\/code><\/pre>\n<\/li>\n<\/ul>\n<p>\u0414\u043b\u044f \u043d\u0438\u0445 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c <code>constexpr<\/code>.<\/p>\n<p>  <b>\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u0438 \u043a\u043e\u043d\u0446\u0435\u043f\u0442\u044b<\/b>  <\/p>\n<ul>\n<li>\n<pre><code class=\"cpp\">NullablePointer T <\/code><\/pre>\n<p>\u0412\u0435\u0437\u0434\u0435, \u0433\u0434\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0442\u0438\u043f, \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u044e\u0449\u0438\u0439 \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u043d\u044f\u0442\u0438\u044e (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0438\u043f \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f <code>std::unique_ptr<\/code>), \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u0430 \u0438 \u043d\u0435\u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u0430 <code>NullablePointer<\/code> \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u043c\u044b\u043c \u0432 <code>bool<\/code>.<\/li>\n<li>\n<pre><code class=\"cpp\">std::remove_if(first, last, [&amp;](auto){ return t; }); <\/code><\/pre>\n<p>\u0412 \u043b\u044e\u0431\u043e\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0435 \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u0430 <code>Predicate<\/code> \u0438\u043b\u0438 <code>BinaryPredicate<\/code> \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u043f\u0440\u0435\u0434\u0438\u043a\u0430\u0442 \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c <code>T<\/code>.<\/li>\n<li>\n<pre><code class=\"cpp\">std::sort(first, last, [&amp;](auto){ return t; }); <\/code><\/pre>\n<p>\u0412 \u043b\u044e\u0431\u043e\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0435 \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u0430 <code>Compare<\/code> \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 comparator \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>T<\/code>.<\/li>\n<\/ul>\n<p>  <font color=\"#BFBFBF\">[<\/font><font color=\"gray\"><i>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430 \u0441\u0442\u0430\u0442\u044c\u0438: \u0438 \u044d\u0442\u043e, \u0441\u0443\u0434\u044f \u043f\u043e \u0432\u0441\u0435\u043c\u0443, \u043d\u0435 \u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a (\u0434\u043b\u044f \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0445\u043e\u0440\u043e\u0448\u0435\u043d\u044c\u043a\u043e \u043f\u043e\u043a\u043e\u0432\u044b\u0440\u044f\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442). \u0427\u0443\u0432\u0441\u0442\u0432\u0443\u0435\u0442\u0435, \u043a\u0430\u043a \u043f\u0430\u0445\u043d\u0435\u0442 &#171;\u0434\u0443\u0445\u043e\u043c&#187; \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e C++? &#171;\u041e\u0442\u043b\u0438\u0447\u043d\u044b\u0439&#187; \u0432\u043e\u043f\u0440\u043e\u0441 \u0434\u043b\u044f \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f, \u043d\u0435 \u043f\u0440\u0430\u0432\u0434\u0430 \u043b\u0438? :)(:<br \/>  \u041d\u0435\u0432\u043e\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0442\u0430\u043a\u0430\u044f \u043c\u044b\u0441\u043b\u044c: \u0430 \u0441\u0442\u043e\u0438\u043b\u043e \u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0433\u043e\u0440\u043e\u0434\u0438\u0442\u044c \u0432\u0441\u0451 \u044d\u0442\u043e \u0440\u0430\u0434\u0438 \u043f\u043e\u043b \u0447\u0430\u0439\u043d\u043e\u0439 \u043b\u043e\u0436\u043a\u0438 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u0430\u0445\u0430\u0440\u0430? (\u0422.\u0435. \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0438\u0441\u0430\u0442\u044c <code>while (stream)<\/code> \u0432\u043c\u0435\u0441\u0442\u043e <code>while (stream.ok())<\/code> \u0438 <code>if (p)<\/code> \u0432\u043c\u0435\u0441\u0442\u043e <code>if (p != nullptr)<\/code>.)<\/i><\/font><font color=\"#BFBFBF\">]<\/font>  <\/div>\n<\/p><\/div>\n<p>  \u0414\u043b\u044f \u0447\u0435\u0433\u043e \u0432 C++ \u044f\u0432\u043d\u044b\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a <code>bool<\/code> \u0431\u044b\u043b \u0441\u0434\u0435\u043b\u0430\u043d \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a? \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0437\u0430\u043c\u0435\u043d\u0443 &#171;safe bool idiom&#187; <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u0438 \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043e\u0442\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u044d\u0442\u043e\u0439 \u0438\u0434\u0438\u043e\u043c\u044b<\/font><font color=\"#BFBFBF\">]<\/font>.<br \/>  \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 &#171;safe bool idiom&#187;?<br \/>  \u041e\u0445, \u043d\u0443 \u044d\u0442\u043e \u0442\u0430\u043a\u0430\u044f \u0448\u0442\u0443\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u043e <code>operator bool()<\/code> \u0432 C++ \u0434\u043e \u0432\u0435\u0440\u0441\u0438\u0438 C++11, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e <code>operator bool()<\/code> \u0431\u0435\u0437 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 <code>explicit<\/code>\u2026 \u043d\u0443 \u0432 \u043e\u0431\u0449\u0435\u043c \u043e\u043d <s>\u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439<\/s> &#171;\u043d\u0435\u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439&#187;, \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0432 production code \u043d\u0435 \u043f\u0440\u0438\u043d\u044f\u0442\u043e.<br \/>  \u0415\u0441\u043b\u0438 \u0432 \u0434\u0432\u0443\u0445 \u0441\u043b\u043e\u0432\u0430\u0445, \u0442\u043e <code>operator bool()<\/code> \u0431\u0435\u0437 <code>explicit<\/code> \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u044b\u0437\u0432\u0430\u043d \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c \u043d\u0435\u044f\u0432\u043d\u043e \u0434\u043b\u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043a \u0447\u0438\u0441\u043b\u0443 (\u043a\u0430\u043a \u0446\u0435\u043b\u043e\u043c\u0443, \u0442\u0430\u043a \u0438 \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439) \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u043f\u0440\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u0434\u0432\u0443\u0445 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d <code>operator bool()<\/code> \u0431\u0435\u0437 <code>explicit<\/code><\/font><font color=\"#BFBFBF\">]<\/font>. \u0410 \u0435\u0441\u043b\u0438 \u043d\u0435 \u0432 \u0434\u0432\u0443\u0445 \u0441\u043b\u043e\u0432\u0430\u0445, \u0442\u043e &#171;safe bool idiom&#187; \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u0432\u044f\u0442\u0438\u0442\u044c \u0446\u0435\u043b\u0443\u044e \u043b\u0435\u043a\u0446\u0438\u044e (: \u0430 \u0442\u043e \u0438 \u043d\u0435 \u043e\u0434\u043d\u0443 :). \u0415\u0441\u043b\u0438 \u043a\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/www.artima.com\/articles\/the-safe-bool-idiom\" title=\"&lt;- https:\/\/ilyachalov.livejournal.com\/105147.html &lt;- google:\u2018c++ safe bool idiom\u2019\" rel=\"nofollow noopener noreferrer\">\u0432\u043e\u0442 \u044d\u0442\u043e<\/a>.<\/p>\n<p>  \u0412 \u0438\u0442\u043e\u0433\u0435, \u044f \u0440\u0435\u0448\u0438\u043b, \u0447\u0442\u043e <s>\u043a\u0440\u043e\u043b\u0438\u0447\u044c\u044f \u043d\u043e\u0440\u0430 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0433\u043b\u0443\u0431\u043e\u043a\u0430<\/s> \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u0437\u0430\u0431\u0438\u0432\u0430\u0442\u044c \u0433\u043e\u043b\u043e\u0432\u0443 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430\u043c \u0442\u0430\u043a\u0438\u043c\u0438 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u044f\u043c\u0438 <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043d\u0438 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u0438\u043d\u0441\u0442\u0438\u0442\u0443\u0442\u0430 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442<\/font><font color=\"#BFBFBF\">]<\/font>, \u0438 \u043e\u043f\u0438\u0440\u0430\u044f\u0441\u044c \u043d\u0430 \u0442\u0430\u043a\u043e\u0439 \u0444\u0430\u043a\u0442, \u0447\u0442\u043e <code>std::basic_ios::operator bool()<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <code>!fail()<\/code>, \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f \u043d\u0430 \u0442\u0430\u043a\u043e\u0439 \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u043a\u0435 \u0432 \u0442\u0435\u043a\u0441\u0442\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u044f:  <\/p>\n<blockquote><p>\u0427\u0438\u0442\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0438 \u0444\u0430\u0439\u043b\u0430 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0432 \u0446\u0438\u043a\u043b\u0435 \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 <code>std::getline().fail()<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <code>false<\/code>.<\/p><\/blockquote>\n<p>\u0425\u043e\u0442\u044f \u0442\u0430\u043a\u0443\u044e \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u043a\u0443 \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0435\u0439 \u043a\u043e\u0434 <font color=\"#BFBFBF\">[<\/font><font color=\"gray\"><code>while (!std::getline(f, s).fail())<\/code><\/font><font color=\"#BFBFBF\">]<\/font> \u043d\u0435 \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u043c\u0438, \u043d\u043e \u0437\u0434\u0435\u0441\u044c \u0445\u043e\u0442\u044f \u0431\u044b \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442.<\/p>\n<p>  \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0432\u0435\u0440\u043d\u0451\u043c\u0441\u044f \u043a <code>eof()<\/code>. \u041f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432 C++ \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a?<br \/>  \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u0432 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u0412 Unix-\u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f <code>fread()<\/code> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>read()<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 0 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0446\u0430 \u0444\u0430\u0439\u043b\u0430. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f  \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u043a\u043e\u043d\u0446\u0430 \u0444\u0430\u0439\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>feof()<\/code>\/<code>eof()<\/code>.<br \/>  \u0411\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0443\u0438\u0442\u0438\u0432\u043d\u043e\u0435 <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u0438 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u043d\u043e\u0435!<\/font><font color=\"#BFBFBF\">]<\/font> \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>eof()<\/code> \u2014 \u043a\u043e\u0433\u0434\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u0437\u043d\u0430\u043a \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0438\u0433\u043b\u0430 \u043a\u043e\u043d\u0446\u0430 \u0444\u0430\u0439\u043b\u0430 \u2014 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u0435\u0435. \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e, \u0435\u0441\u043b\u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 \u043d\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043d (\u0447\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043a\u043e\u0433\u0434\u0430 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0444\u0430\u0439\u043b\u0430 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u0432\u0432\u043e\u0434\u0430 <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">stdin<\/font><font color=\"#BFBFBF\">]<\/font>). \u041d\u043e \u0432\u0435\u0434\u044c \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0443\u0444\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044e, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 <code>eof()<\/code> (\u043d\u0430\u0437\u043e\u0432\u0451\u043c \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>at_eof()<\/code>) \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e: \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0432 \u0431\u0443\u0444\u0435\u0440\u0435 \u0441 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0431\u0443\u0444\u0435\u0440\u0430. \u0415\u0441\u043b\u0438 \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u043c\u0435\u043d\u044c\u0448\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430, \u0442\u043e <code>at_eof()<\/code> \u0441\u0440\u0430\u0437\u0443 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <code>false<\/code>. \u0422.\u043a. \u0442\u0430\u043a\u043e\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 >99% \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u0432\u044b\u0437\u043e\u0432\u0430 <code>at_eof()<\/code> \u043f\u0440\u0438 \u0447\u0442\u0435\u043d\u0438\u0438 \u0444\u0430\u0439\u043b\u0430 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u043c\u0438 \u043f\u043e\u0440\u0446\u0438\u044f\u043c\u0438, \u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0445 \u0440\u0430\u0441\u0445\u043e\u0434\u043e\u0432 \u043d\u0430 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <font color=\"#BFBFBF\">[<\/font><font color=\"gray\"><code>at_eof()<\/code><\/font><font color=\"#BFBFBF\">]<\/font>, \u0435\u0441\u043b\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:  <\/p>\n<pre><code class=\"cpp\">    bool at_eof()     {         if (buffer_pos &lt; buffer_size)             return false;         return has_no_data_left();     }  private: #define NOINLINE __attribute__((noinline)) \/\/ or __declspec(noinline)     NOINLINE bool has_no_data_left()     {         if (is_eof_reached) {             ...             return true;         }          if (buffer == nullptr)             allocate_buffer();         fill_buffer();         buffer_pos = 0;         return buffer_size == 0;     } <\/code><\/pre>\n<p>  \u0417\u0434\u0435\u0441\u044c \u0447\u0430\u0441\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>at_eof()<\/code> \u0432\u044b\u043d\u0435\u0441\u0435\u043d\u0430 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e <font color=\"#BFBFBF\">[<\/font><font color=\"gray\"><code>has_no_data_left()<\/code><\/font><font color=\"#BFBFBF\">]<\/font> \u0441 \u043f\u043e\u043c\u0435\u0442\u043a\u043e\u0439 <code>NOINLINE<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e. \u042d\u0442\u043e \u0434\u0430\u0451\u0442 \u0442\u043e, \u0447\u0442\u043e \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>at_eof()<\/code> \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0441\u0430\u043c\u044b\u0439 \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043f\u043e\u0434\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e &#171;\u0432\u044b\u0437\u043e\u0432\u043e\u0432&#187; \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 <code>buffer_pos &lt; buffer_size<\/code>. &#171;\u0412\u044b\u0437\u043e\u0432\u043e\u0432&#187; \u0432\u0437\u044f\u0442\u043e \u0432 \u043a\u0430\u0432\u044b\u0447\u043a\u0438, \u0442.\u043a.  \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>at_eof()<\/code> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 <code>inline<\/code>, \u0442.\u043a. \u043e\u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u0430.<\/p>\n<p>  \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u0442\u0440\u044e\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 libc++: \u0447\u0430\u0441\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 <code>std::vector::emplace_back()<\/code> <a href=\"https:\/\/github.com\/llvm\/llvm-project\/blob\/faf555f93f3628b7b2b64162c02dd1474540532e\/libcxx\/include\/vector#L1511\" rel=\"nofollow noopener noreferrer\">\u0432\u044b\u043d\u0435\u0441\u0435\u043d\u0430<\/a> \u0432\u043e \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 <code>__emplace_back_slow_path()<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0438\u0433\u0434\u0435 <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u043a\u0440\u043e\u043c\u0435 <code>emplace_back()<\/code><\/font><font color=\"#BFBFBF\">]<\/font> \u043d\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>  \u042f \u0442\u0430\u043a \u0430\u043a\u0446\u0435\u043d\u0442\u0438\u0440\u0443\u044e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u0430\u043a\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u043c \u0442\u0440\u044e\u043a\u0435, \u0442.\u043a. \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043d\u0435 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430 \u043e\u043d \u043e\u0447\u0435\u0432\u0438\u0434\u0435\u043d \u2014 \u0432 \u0444\u043e\u0440\u043a\u0435 \u043c\u043e\u0435\u0433\u043e \u0430\u043b\u043b\u043e\u043a\u0430\u0442\u043e\u0440\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 ltalloc \u043a\u0442\u043e-\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043b <a href=\"https:\/\/github.com\/r-lyeh-archived\/ltalloc\/commit\/03816b48ab838e40d28630ac71eac133d511625f\" rel=\"nofollow noopener noreferrer\">\u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u043c\u043c\u0438\u0442<\/a> (\u0442\u0430\u043c \u0436\u0435 \u044f \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u043b, \u043f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u043e\u0442 \u043a\u043e\u043c\u043c\u0438\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b\u043e).<\/p>\n<p>  \u0422\u0430\u043a\u0430\u044f, \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u043d\u0435\u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043c\u0435\u043b\u043e\u0447\u044c, \u043a\u0430\u043a \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 <code>at_eof()<\/code> <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u044f \u0434\u0435\u043b\u0430\u044e \u0430\u043a\u0446\u0435\u043d\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438, \u0430 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u043c\u0435\u0442\u043e\u0434\u0430 \u0441 \u0442\u0430\u043a\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u043e\u043c, \u0442.\u043a. <code>at_eof()<\/code> \u0432\u043f\u043e\u043b\u043d\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u044d\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u0421\u0438, \u043a\u0430\u043a \u044d\u0442\u043e <a href=\"https:\/\/github.com\/nim-lang\/Nim\/blob\/4a1151d6b457ba48da476e71efbe42f1f836507b\/lib\/std\/syncio.nim#L564\" title=\"&lt;- https:\/\/github.com\/nim-lang\/Nim\/blob\/version-2-0\/lib\/std\/syncio.nim#L564 &lt;- https:\/\/nim-lang.org\/docs\/syncio.html#endOfFile%2CFile &lt;- https:\/\/forum.nim-lang.org\/t\/2787 &lt;- google:\u2018nim eof\u2019\" rel=\"nofollow noopener noreferrer\">\u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0432 Nim<\/a> \u043f\u0430\u0440\u043e\u0439 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 <code>fgetc()<\/code> \u0438 <code>ungetc()<\/code>, \u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 <i>\u043e\u0447\u0435\u043d\u044c<\/i> \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e<\/font><font color=\"#BFBFBF\">]<\/font> \u0434\u0435\u043b\u0430\u0435\u0442  \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0439 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u0443\u044e <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9F%D0%B0%D1%80%D0%B0%D0%B4%D0%B8%D0%B3%D0%BC%D0%B0_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F\" rel=\"nofollow noopener noreferrer\">\u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u0443<\/a> \u0447\u0442\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432:  <\/p>\n<pre><code class=\"cpp\">while (!f.at_eof()) {     \/\/ \u0427\u0438\u0442\u0430\u0435\u043c \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0444\u0430\u0439\u043b\u0430 f     \/\/ ... } <\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c  \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u043c \u0444\u0430\u0439\u043b\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0434\u0438\u043d\u043e\u0447\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430, \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0449\u0430\u044f\u0441\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u043c <code>\\n<\/code>. \u0418\u043b\u0438 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c \u0432 csv-\u0444\u0430\u0439\u043b\u0435 (\u043a\u0430\u0436\u0434\u043e\u0435 \u043f\u043e\u043b\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0434\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0442\u0440\u043e\u043a). \u0418\u043b\u0438 \u0434\u0435\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0443\u0435\u043c\u044b\u0439 \u0432 \u043e\u0431\u044a\u0435\u043a\u0442 \u0431\u043b\u043e\u043a \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u0430\u043a \u0432 <a href=\"https:\/\/internals.rust-lang.org\/t\/add-is-at-eof-to-bufread-trait\/14798\/6\" title=\"&lt;- google:\u2018rust eof\u2019\" rel=\"nofollow noopener noreferrer\">\u044d\u0442\u043e\u043c \u043f\u043e\u0441\u0442\u0435<\/a>.<\/p>\n<p>  \u0418 \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0431\u0435\u0433\u043b\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043d\u0430 Stack Overflow (<a href=\"https:\/\/stackoverflow.com\/questions\/15859041\/how-does-c-handle-eof\" title=\"&lt;- google:\u2018eof pascal vs c\u2019\" rel=\"nofollow noopener noreferrer\">1<\/a>, <a href=\"https:\/\/stackoverflow.com\/questions\/5431941\/why-is-while-feoffile-always-wrong\" title=\"&lt;- https:\/\/stackoverflow.com\/questions\/15859041\/how-does-c-handle-eof\" rel=\"nofollow noopener noreferrer\">2<\/a>, <a href=\"https:\/\/stackoverflow.com\/questions\/13112797\/creating-a-binary-search-tree-in-c99\" title=\"&lt;- https:\/\/stackoverflow.com\/questions\/15859041\/how-does-c-handle-eof\" rel=\"nofollow noopener noreferrer\">3<\/a>), \u0434\u0430\u043d\u043d\u0430\u044f \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0434\u043b\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432 (\u0438 \u043d\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>eof()<\/code> \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a \u0432 \u044f\u0437\u044b\u043a\u0430\u0445 Pascal \u0438 Nim, \u043f\u0440\u0430\u0432\u0434\u0430, \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e, \u0447\u0435\u043c \u0432 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438).<\/p>\n<p>  \u041c\u043d\u0435 \u043e\u0447\u0435\u043d\u044c &#171;\u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f&#187; \u043b\u043e\u0433\u0438\u043a\u0430 \u0430\u0432\u0442\u043e\u0440\u0430 \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/faq.cprogramming.com\/cgi-bin\/smartfaq.cgi?id=1043284351&amp;answer=1046476070\" title=\"&lt;- https:\/\/stackoverflow.com\/questions\/5431941\/why-is-while-feoffile-always-wrong\" rel=\"nofollow noopener noreferrer\">\u2018Why it&#8217;s bad to use feof() to control a loop\u2019<\/a>:  <\/p>\n<blockquote><p>When reading in a file, and processing it line by line, it&#8217;s logical to think of the code loop as &#171;while not at the end of the file, read and process data&#187;. &#8230;<br \/>  &#8230;<br \/>  \u2026 The problem stems from the method <code>feof()<\/code> uses to determine if EOF has actually been reached. Let&#8217;s have a look at the C standard:<br \/>  &#8230;<br \/>  Do you see the problem yet? &#8230;<br \/>  To correct the problem, always follow this rule: use the return code from the read function to determine when you&#8217;ve hit EOF.<\/p><\/blockquote>\n<p>  \u041d\u0430\u0447\u0430\u043b\u043e \u0441\u0442\u0430\u0442\u044c\u0438 \u0445\u043e\u0440\u043e\u0448\u0435\u0435: \u0430\u0432\u0442\u043e\u0440 \u0432\u0435\u0440\u043d\u043e \u0437\u0430\u043c\u0435\u0447\u0430\u0435\u0442, \u0447\u0442\u043e <i>\u00abit&#8217;s logical to think of the code loop as &#171;while not at the end of the file, read and process data&#187;\u00bb<\/i>.<\/p>\n<p>  \u041d\u043e \u0434\u0430\u043b\u044c\u0448\u0435 \u043e\u043d \u0433\u043e\u0432\u043e\u0440\u0438\u0442, \u0447\u0442\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u043c\u044b\u0448\u043b\u0435\u043d\u0438\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430, \u0438 \u0434\u043b\u044f \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u043f\u043e-\u0434\u0440\u0443\u0433\u043e\u043c\u0443.<\/p>\n<p>  \u041c\u043d\u0435 \u0436\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0442\u0443\u0442 \u0432 \u0434\u0440\u0443\u0433\u043e\u043c. \u0410 \u0438\u043c\u0435\u043d\u043d\u043e, \u0432 \u0441\u0430\u043c\u043e\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0435 \u044f\u0437\u044b\u043a\u0430 \u0421\u0438.<\/p>\n<p>  (\u0412\u044b\u0440\u0430\u0436\u0430\u044f\u0441\u044c \u0441\u043b\u043e\u0432\u0430\u043c\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432 \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u0438 <a href=\"https:\/\/news.ycombinator.com\/item?id=23311974\" title=\"&lt;- https:\/\/news.ycombinator.com\/item?id=23300285 &lt;- google:\u2018fmt benchmarks\u2019\" rel=\"nofollow noopener noreferrer\">\u043d\u0430 Hacker News<\/a>: \u2018\u2018Practically everyone is still learning the wrong default\u2019\u2019.)<\/p>\n<p>  \u041e\u0434\u0438\u043d \u0438\u0437 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 Stack Overflow <a href=\"https:\/\/stackoverflow.com\/a\/15859133\" title=\"&lt;- https:\/\/stackoverflow.com\/questions\/15859041\/how-does-c-handle-eof\" rel=\"nofollow noopener noreferrer\">\u043d\u0430\u043f\u0438\u0441\u0430\u043b<\/a>, \u0447\u0442\u043e \u0437\u0430 25 \u043b\u0435\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u0421\u0438 \u043e\u043d \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 <code>feof()<\/code> \u043b\u0438\u0448\u044c 2 \u0440\u0430\u0437\u0430, \u0438 \u0432 \u043e\u0431\u043e\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043b\u0438\u0448\u044c \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u044f\u0432\u0438\u043b\u043e\u0441\u044c \u043f\u0440\u0438\u0447\u0438\u043d\u043e\u0439 \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u043e\u0433\u043e \u0447\u0442\u0435\u043d\u0438\u044f (\u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0446\u0430 \u0444\u0430\u0439\u043b\u0430 \u0438\u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0430). \u0418\u0437 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u044b\u0432\u043e\u0434, \u0447\u0442\u043e \u0442\u0430\u043a\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u0430. \u0410 \u043d\u0443\u0436\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0430\u044f \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u0432 \u0447\u0438\u0442\u0430\u0435\u043c\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u0438\u043b\u0438 \u043d\u0435\u0442. \u0422\u0430\u043a\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 \u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <code>at_eof()<\/code>.<\/p>\n<p>  \u041e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0432 Rust \u0442\u043e\u0436\u0435 \u0435\u0441\u0442\u044c \u0442\u0430\u043a\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u043d\u0430 <a href=\"https:\/\/github.com\/rust-lang\/rust\/commit\/ce1d5611a28468663e275078649e7ca6eef735a8\" title=\"&lt;- https:\/\/github.com\/rust-lang\/rust\/pull\/85815 &lt;- https:\/\/internals.rust-lang.org\/t\/add-is-at-eof-to-bufread-trait\/14798 &lt;- google:\u2018rust eof\u2019\" rel=\"nofollow noopener noreferrer\">has_data_left()<\/a>, \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u043c\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e <code>at_eof()<\/code>.<br \/>  \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u043e\u043a\u0438 \u0444\u0430\u0439\u043b\u0430 <code>read_line()<\/code> \u0432 Rust \u043e\u0447\u0435\u043d\u044c \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u0430 <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u0445\u043e\u0442\u044c \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u043e\u0432\u0430\u0440\u0438\u0449\u0438 \u0441\u043e Stack Overflow <a href=\"https:\/\/stackoverflow.com\/questions\/70479516\/read-line-in-rust\" title=\"What's great about this API is that it not only enables buffer reuse in a clean way, it also encourages it.\" rel=\"nofollow noopener noreferrer\">\u0432\u044b\u0440\u0430\u0436\u0430\u044e\u0442 \u0432\u043e\u0441\u0445\u0438\u0449\u0435\u043d\u0438\u0435<\/a> \u0442\u0430\u043a\u0438\u043c \u0434\u0438\u0437\u0430\u0439\u043d\u043e\u043c<\/font><font color=\"#BFBFBF\">]<\/font>:  <\/p>\n<ol>\n<li>\u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043e\u0447\u0438\u0449\u0430\u0442\u044c \u0431\u0443\u0444\u0435\u0440, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u0430, \u043f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0432\u044b\u0437\u043e\u0432\u043e\u043c <code>read_line()<\/code>. <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u041d\u0435 \u043c\u043e\u0433\u0443 \u0441\u0435\u0431\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u044b\u043b\u043e \u0431\u044b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u043d\u0435\u043f\u0443\u0441\u0442\u043e\u0439 \u0431\u0443\u0444\u0435\u0440.<\/font><font color=\"#BFBFBF\">]<\/font><\/li>\n<li>\u041f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u043c \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0446\u0430 \u0444\u0430\u0439\u043b\u0430 <a href=\"https:\/\/doc.rust-lang.org\/std\/io\/trait.BufRead.html#method.read_line\" title=\"&lt;- https:\/\/doc.rust-lang.org\/std\/io\/struct.Stdin.html &lt;- google:\u2018read_line rust\u2019\" rel=\"nofollow noopener noreferrer\">\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f<\/a> \u0432\u043e\u0437\u0432\u0440\u0430\u0442 <code>Ok(0)<\/code>. \u041b\u043e\u0433\u0438\u0447\u043d\u0435\u0435 \u0431\u044b\u043b\u043e \u0431\u044b \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443, \u043a\u0430\u043a \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>read_exact()<\/code>.<\/li>\n<li>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0445 \u0431\u0430\u0439\u0442 \u2014 \u043f\u043e \u0441\u0443\u0442\u0438 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u043e (\u0442.\u043a. \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043f\u0443\u0441\u0442\u043e\u0439 \u0431\u0443\u0444\u0435\u0440, \u0442\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0445 \u0431\u0430\u0439\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u0431\u0443\u0444\u0435\u0440\u0430 \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438).<\/li>\n<li>\u041e\u0448\u0438\u0431\u043a\u0438 \u0447\u0442\u0435\u043d\u0438\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u044f\u0432\u043d\u043e. \u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0434\u043e\u0431\u0430\u0432\u043a\u0438 <code>?<\/code> \u0442\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043c\u0435\u0441\u0442\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u0441\u0442\u0440\u043e\u043a\u0435 \u043a\u043e\u0434\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u0447\u0442\u0435\u043d\u0438\u044f<\/font><font color=\"#BFBFBF\">]<\/font>. \u042d\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0431\u044b\u043b\u0430 \u0431\u044b \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430, \u0435\u0441\u043b\u0438 \u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f. \u0425\u043e\u0442\u044f \u044d\u0442\u043e \u0443\u0436\u0435 \u043f\u0440\u0435\u0442\u0435\u043d\u0437\u0438\u044f \u0441\u043a\u043e\u0440\u0435\u0435 \u043a Rust \u0432 \u0446\u0435\u043b\u043e\u043c, \u0447\u0435\u043c \u043a \u0434\u0430\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<\/li>\n<li>\u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>read_line()<\/code>, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 <code>lines()<\/code>, \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a \u0432 \u0441\u0442\u0438\u043b\u0435 Windows (<code>\"\\r\\n\"<\/code>), \u0438  \u0441\u0438\u043c\u0432\u043e\u043b <code>\\r<\/code> \u0432 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0431\u0438\u0440\u0430\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e.<\/li>\n<\/ol>\n<p>  \u0418, \u043a \u0441\u043b\u043e\u0432\u0443, \u0432 Python \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>readline()<\/code>  \u0442\u043e\u0436\u0435 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u0430:  <\/p>\n<ol>\n<li>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 (\u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u043d\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0432 <abbr title=\"\u0432 \u0444\u0430\u0439\u043b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u043c \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0441\u0442\u0440\u043e\u043a\u0438\">\u0444\u0430\u0439\u043b\u0435<\/abbr>) \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0438\u043c\u0432\u043e\u043b \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 <code>\"\\n\"<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0448\u0430\u0435\u0442 \u0438 \u0435\u0433\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0443\u0431\u0438\u0440\u0430\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0437\u043e\u0432\u043e\u043c <code>.rstrip()<\/code>), \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u043a\u043e\u0433\u0434\u0430 \u044d\u0442\u043e \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: <code>int(line)<\/code>, <code>float(line)<\/code>, <code>line.split()<\/code>.<\/li>\n<li>\u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0446\u0430 \u0444\u0430\u0439\u043b\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043f\u0443\u0441\u0442\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430. \u041b\u043e\u0433\u0438\u0447\u043d\u0435\u0435 \u0431\u044b\u043b\u043e \u0431\u044b \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u0442\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 <a href=\"https:\/\/docs.python.org\/3\/library\/exceptions.html#EOFError\" rel=\"nofollow noopener noreferrer\">EOFError<\/a>, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>input()<\/code>, \u0435\u0441\u043b\u0438 \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u044b\u0437\u043e\u0432\u0430 <code>input()<\/code> \u0443\u0436\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442 \u043a\u043e\u043d\u0435\u0446 \u0444\u0430\u0439\u043b\u0430 (\u0432 \u0441\u043b\u0443\u0447\u0430\u0435, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u0442\u043e\u043a \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u0432\u0432\u043e\u0434\u0430 \u0431\u044b\u043b \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d, \u0442.\u0435. \u043a\u043e\u0433\u0434\u0430 \u0432\u0432\u043e\u0434 \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u0444\u0430\u0439\u043b\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440). <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u041f\u0440\u0438\u043d\u044f\u0442\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c \u0442\u0435\u043c, \u0447\u0442\u043e \u0432 Python \u043d\u0435\u0442 \u043c\u0435\u0442\u043e\u0434\u0430 <code>at_eof()<\/code>.<\/font><font color=\"#BFBFBF\">]<\/font><\/li>\n<\/ol>\n<p>  \u0423\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 <code>at_eof()<\/code> <abbr title=\"\u043f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0447\u0442\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0437\u043d\u0430\u043a \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0446\u0430 \u0444\u0430\u0439\u043b\u0430\">\u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442<\/abbr> \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0447\u0442\u0435\u043d\u0438\u044f \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u043e\u0447\u0435\u043d\u044c \u043b\u0435\u0433\u043a\u0438 \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u043c \u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0442\u0435\u043c \u043e\u0447\u0435\u043d\u044c \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u043b\u0438\u0441\u044c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u043c:  <\/p>\n<ul>\n<li><code>read_line()<\/code> \u043f\u0440\u043e\u0441\u0442\u043e \u0447\u0438\u0442\u0430\u0435\u0442 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443;<\/li>\n<li><code>read_char()<\/code> \u043f\u0440\u043e\u0441\u0442\u043e \u0447\u0438\u0442\u0430\u0435\u0442 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u0441\u0438\u043c\u0432\u043e\u043b;<\/li>\n<li><code>read_byte()<\/code> \u043f\u0440\u043e\u0441\u0442\u043e \u0447\u0438\u0442\u0430\u0435\u0442 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u0431\u0430\u0439\u0442;<\/li>\n<li><code>read_bytes(10)<\/code> \u0447\u0438\u0442\u0430\u0435\u0442 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 10 \u0431\u0430\u0439\u0442 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043c\u0430\u0441\u0441\u0438\u0432 \u0438\u0437 \u044d\u0442\u0438\u0445 10 \u0431\u0430\u0439\u0442 (\u0432 \u0432\u0438\u0434\u0435 <code>std::vector&lt;uint8_t><\/code>, \u0430 \u0434\u043b\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 <code>std::array&lt;uint8_t, 10><\/code> \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>read_bytes&lt;10>()<\/code>);<\/li>\n<li><code>read_struct(h)<\/code> \u0447\u0438\u0442\u0430\u0435\u0442 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a bmp-\u0444\u0430\u0439\u043b\u0430) \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0435\u0451 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 <code>h<\/code>, \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044f.<\/li>\n<\/ul>\n<p>  \u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0438\u043b\u0438 \u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442 \u043f\u0440\u0438\u0437\u043d\u0430\u043a \u043a\u043e\u043d\u0446\u0430 \u0444\u0430\u0439\u043b\u0430 (\u043a\u0430\u043a \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>fgetc()<\/code> \u0432\u043c\u0435\u0441\u0442\u043e \u043a\u043e\u0434\u0430 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <code>-1<\/code> \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0446\u0430 \u0444\u0430\u0439\u043b\u0430, \u0430 <code>fgetwc()<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <code>0xFFFF<\/code>).<\/p>\n<p>  \u0412\u0441\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0447\u0442\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u0442\u043e, \u0447\u0442\u043e \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u043b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442.<\/p>\n<p>  \u041d\u0443, \u0438\u043b\u0438 \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u2026 :)(:<br \/>  \u0410 \u0447\u0442\u043e \u0442\u043e\u0433\u0434\u0430 \u043e\u043d\u0438 \u0434\u0435\u043b\u0430\u044e\u0442 \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435? \u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f, \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u044e\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435. <code>UnexpectedEOF<\/code> \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u0433\u043e \u043a\u043e\u043d\u0446\u0430 \u0444\u0430\u0439\u043b\u0430. \u0418 <code>IOError<\/code> \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0448\u0438\u0431\u043a\u0438.<\/p>\n<p>  \u0422\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>read_exact()<\/code> \u0432 Rust <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u043e\u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 ErrorKind<\/font><font color=\"#BFBFBF\">]<\/font>. \u041d\u043e \u044f \u0441\u0447\u0438\u0442\u0430\u044e, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0443 <i>\u0432\u0441\u0435\u0445<\/i> \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0447\u0442\u0435\u043d\u0438\u044f, \u0442.\u043a. \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 <abbr title=\"\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0443 \u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0447\u0442\u0435\u043d\u0438\u044f\">\u043f\u0440\u043e\u0441\u0442\u043e<\/abbr> \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430\u0434\u0451\u0436\u043d\u044b\u0439 \u043a\u043e\u0434 \u2014 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u0432\u0435\u0440\u0435\u043d, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u043a\u043e\u0434, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0447\u0442\u0435\u043d\u0438\u044f, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f, \u0442\u043e \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u0431\u044b\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u044b \u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441 \u043d\u0438\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u0421\u0445\u043e\u0436\u0443\u044e \u043f\u043e\u0437\u0438\u0446\u0438\u044e <a href=\"https:\/\/devblogs.microsoft.com\/oldnewthing\/20151104-00\/?p=91961\" title=\"&lt;- google:\u2018when fread less than requested\u2019\" rel=\"nofollow noopener noreferrer\">\u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u0442<\/a> \u0420\u0435\u0439\u043c\u043e\u043d\u0434 \u0427\u0435\u043d, \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u044f \u043f\u043e\u0447\u0435\u043c\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>ReadFile()<\/code> \u0438\u0437 WinAPI \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043c\u0435\u043d\u044c\u0448\u0435 \u0431\u0430\u0439\u0442, \u0447\u0435\u043c \u0431\u044b\u043b\u043e \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u043e, \u043f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0438, \u0447\u0442\u043e \u043a\u043e\u043d\u0435\u0446 \u0444\u0430\u0439\u043b\u0430 \u043d\u0435 \u0431\u044b\u043b \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442. <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043d \u0443\u043c\u043e\u043b\u0447\u0430\u043b \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 <code>ReadFile()<\/code> \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0432 \u044f\u0434\u0440\u043e \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e (\u043f\u043e\u0440\u044f\u0434\u043a\u0430 3000 \u0442\u0430\u043a\u0442\u043e\u0432) \u0438 \u043d\u0438\u043a\u0442\u043e \u0432 \u0437\u0434\u0440\u0430\u0432\u043e\u043c \u0443\u043c\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c <code>ReadFile()<\/code> \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u043a\u0430\u0436\u0434\u044b\u0445 4-\u0445 \u0431\u0430\u0439\u0442 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430. (\u041f\u043e \u043c\u043e\u0438\u043c \u0437\u0430\u043c\u0435\u0440\u0430\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 <code>ReadFile()<\/code> \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0433\u043e \u043e\u0434\u043d\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430 \u043e\u0431\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u0432 8000 \u0442\u0430\u043a\u0442\u043e\u0432 \u0434\u0430\u0436\u0435 \u043f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0438 \u0447\u0442\u043e \u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0439 \u0444\u0430\u0439\u043b \u0443\u0436\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0432 \u043a\u044d\u0448\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b.)<\/font><font color=\"#BFBFBF\">]<\/font><\/p>\n<p>  <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u0442\u0430\u043a \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 <code>read()<\/code> \u043a\u0430\u043a \u0432 C++ \u0438\u043b\u0438 Rust, \u0442\u043e \u0432 ffh \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d \u043c\u0435\u0442\u043e\u0434 <code>read_at_most()<\/code>. \u0410 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044e <code>eof()<\/code> \u0438\u0437 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 C++ \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u0435\u0442\u043e\u0434 <code>eof_passed()<\/code>.<\/font><font color=\"#BFBFBF\">]<\/font><\/p>\n<p>  \u0414\u0440\u0443\u0433\u043e\u0439 \u0432\u0430\u0436\u043d\u043e\u0439 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 ffh \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 <code>read_byte()<\/code>. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0447\u0438\u0442\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u043b\u0443\u0447\u0448\u0435, \u043f\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0447\u0442\u0435\u043d\u0438\u044f, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a <a href=\"https:\/\/doc.rust-lang.org\/std\/io\/trait.BufRead.html#method.read_until\" rel=\"nofollow noopener noreferrer\">read_until()<\/a> \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 (\u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043c\u0435\u0442\u043e\u0434 <code>read_line()<\/code>). \u041d\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 <code>read_byte()<\/code> \u0442\u043e\u0436\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043b\u0438\u0448\u043d\u0438\u043c, \u0442.\u043a. \u043a\u043e\u0434 \u0441 \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0449\u0435, \u0430 \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0431\u0435\u0437 \u043d\u0435\u0433\u043e \u0438 \u0432\u043e\u0432\u0441\u0435 \u043d\u0435 \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c. <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u0425\u043e\u0442\u044f \u0437\u0430\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u0444\u0430\u0439\u043b\u044b \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u044b\u0433\u043e\u0434\u043d\u0435\u0435 \u0447\u0438\u0442\u0430\u0442\u044c \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u2014 \u043f\u0430\u0440\u0441\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0431\u043b\u043e\u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0431\u0443\u0434\u0435\u0442 \u0438 \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0438 \u043f\u0440\u043e\u0449\u0435.<\/font><font color=\"#BFBFBF\">]<\/font><br \/>  \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f <code>read_byte()<\/code> \u0432 ffh \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:  <\/p>\n<pre><code class=\"cpp\">    uint8_t read_byte()     {         if (at_eof())             throw UnexpectedEOF();         return buffer[buffer_pos++];     } <\/code><\/pre>\n<p>\u0415\u0451 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u043f\u043e\u043c\u0438\u043c\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/font><font color=\"#BFBFBF\">]<\/font> \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435\u043c \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u0447\u0435\u043c-\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u043e \u0432\u0441\u0435\u0445 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u0447\u0442\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 C \u0438 C++. \u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0443 \u043c\u043e\u0436\u043d\u043e \u0435\u0449\u0451 \u043f\u043e\u043d\u044f\u0442\u044c \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u043e\u0431\u0449\u0438\u0439 \u043b\u043e\u0433 \u0444\u0430\u0439\u043b \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432<\/font><font color=\"#BFBFBF\">]<\/font>. \u041d\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0442\u043e \u043e\u043d\u0430 \u043a \u0447\u0435\u043c\u0443? (\u0415\u0441\u043b\u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0437\u0430\u0449\u0438\u0442\u044b \u043e\u0442 UB \u0438\u0437-\u0437\u0430 \u0447\u0442\u0435\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0438\u0437 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c id \u043f\u043e\u0442\u043e\u043a\u0430 \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u0435 \u0444\u0430\u0439\u043b\u0430 \u043f\u0440\u0438 \u0435\u0433\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 \u0438 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u0447\u0442\u0435\u043d\u0438\u044f \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c id \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430 \u0441 \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u043c, \u043d\u043e \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u0440\u0438 \u0447\u0442\u0435\u043d\u0438\u0438 \u044f\u0432\u043d\u043e \u0438\u0437\u043b\u0438\u0448\u043d\u044f.)<\/p>\n<h3>\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/h3>\n<p>  \u0414\u0430\u0431\u044b \u043d\u0435 \u0431\u044b\u0442\u044c \u0433\u043e\u043b\u043e\u0441\u043b\u043e\u0432\u043d\u044b\u043c, \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0442\u0435\u0441\u0442\u043e\u0432 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0447\u0442\u0435\u043d\u0438\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 ffh \u0441\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 \u0447\u0442\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432\/\u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0432 C\/C++.<br \/>  (\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0442\u0435\u0441\u0442\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c <a href=\"https:\/\/github.com\/alextretyak\/file_for_humans\/tree\/master\/perf_tests\" rel=\"nofollow noopener noreferrer\">\u0442\u0443\u0442<\/a>.)<\/p>\n<p>  <b>1. \u041f\u043e\u0431\u0430\u0439\u0442\u043e\u0432\u043e\u0435 \u0447\u0442\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 1 \u041c\u0431<\/b>  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<tr>\n<td>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">ffh (read_byte) [\u0440\u0430\u0437\u043c\u0435\u0440 \u0431\u0443\u0444\u0435\u0440\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e (32 \u041a\u0431)]<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">while (!f.at_eof())     ... f.read_byte(); <\/code><\/pre>\n<\/div><\/div>\n<\/td>\n<td>1x<\/td>\n<\/tr>\n<tr>\n<td>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">ffh (read_byte) \u0441 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0431\u0443\u0444\u0435\u0440\u0430 4 \u041a\u0431<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">f.set_buffer_size(4 * 1024);  while (!f.at_eof())     ... f.read_byte(); <\/code><\/pre>\n<\/div><\/div>\n<\/td>\n<td>1.4x<\/td>\n<\/tr>\n<tr>\n<td>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">C (fgetc)<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">for (int c; (c = fgetc(f)) != EOF;)     ... <\/code><\/pre>\n<\/div><\/div>\n<\/td>\n<td>22x<\/td>\n<\/tr>\n<tr>\n<td>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">C++ (get)<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">for (int c; (c = f.get()) != std::ifstream::traits_type::eof();)     ... <\/code><\/pre>\n<\/div><\/div>\n<\/td>\n<td>36x<\/td>\n<\/tr>\n<tr>\n<td>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">C (fgetc) \u0441 \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u0435\u0439 at_eof()<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">bool at_eof_c(FILE *f) {     int c = fgetc(f);     ungetc(c, f);     return c == EOF; }  while (!at_eof_c(f))     ... fgetc(f); <\/code><\/pre>\n<\/div><\/div>\n<\/td>\n<td>68x<\/td>\n<\/tr>\n<tr>\n<td>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">C++ (get) \u0441 \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u0435\u0439 at_eof() \u0447\u0435\u0440\u0435\u0437 unget()<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">bool at_eof_cpp_unget(std::ifstream &amp;f) {     int c = f.get();     if (c == std::ifstream::traits_type::eof())         return true;     f.unget();     return false; }  while (!at_eof_cpp_unget(f))     ... f.get(); <\/code><\/pre>\n<\/div><\/div>\n<\/td>\n<td>104x<\/td>\n<\/tr>\n<tr>\n<td>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">C++ (get) \u0441 \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u0435\u0439 at_eof() \u0447\u0435\u0440\u0435\u0437 peek()<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">bool at_eof_cpp_peek(std::ifstream &amp;f) {     return f.peek() == std::ifstream::traits_type::eof(); }  while (!at_eof_cpp_peek(f))     ... f.get(); <\/code><\/pre>\n<\/div><\/div>\n<\/td>\n<td>66x<\/td>\n<\/tr>\n<tr>\n<td>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">C (fgetc) \u0441 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0431\u0443\u0444\u0435\u0440\u0430 32 \u041a\u0431<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">setvbuf(f, NULL, _IOFBF, 32 * 1024);  for (int c; (c = fgetc(f)) != EOF;)     ... <\/code><\/pre>\n<\/div><\/div>\n<\/td>\n<td>21x<\/td>\n<\/tr>\n<tr>\n<td>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">C (fgetc) \u0441 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0431\u0443\u0444\u0435\u0440\u0430 1024 \u041a\u0431<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">setvbuf(f, NULL, _IOFBF, 1024 * 1024);  for (int c; (c = fgetc(f)) != EOF;)     ... <\/code><\/pre>\n<\/div><\/div>\n<\/td>\n<td>21x<\/td>\n<\/tr>\n<tr>\n<td>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">C (fgetc) \u0441 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0431\u0443\u0444\u0435\u0440\u0430 256 \u0431\u0430\u0439\u0442<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">setvbuf(f, NULL, _IOFBF, 256);  for (int c; (c = fgetc(f)) != EOF;)     ... <\/code><\/pre>\n<\/div><\/div>\n<\/td>\n<td>28x<\/td>\n<\/tr>\n<tr>\n<td>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">C++ (get) \u0441 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0431\u0443\u0444\u0435\u0440\u0430 32 \u041a\u0431<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">static char buffer[32 * 1024]; f.rdbuf()->pubsetbuf(buffer, sizeof(buffer));  for (int c; (c = f.get()) != std::ifstream::traits_type::eof();)     ... <\/code><\/pre>\n<\/div><\/div>\n<\/td>\n<td>35x<\/td>\n<\/tr>\n<tr>\n<td>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">C (getc_unlocked)<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">for (int c; (c = getc_unlocked(f)) != EOF;)     ... <\/code><\/pre>\n<\/div><\/div>\n<\/td>\n<td>2.3x<\/td>\n<\/tr>\n<tr>\n<td>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">C (getc_unlocked) \u0441 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0431\u0443\u0444\u0435\u0440\u0430 32 \u041a\u0431<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">setvbuf(f, NULL, _IOFBF, 32 * 1024);  for (int c; (c = getc_unlocked(f)) != EOF;)     ... <\/code><\/pre>\n<\/div><\/div>\n<\/td>\n<td>1.9x<\/td>\n<\/tr>\n<\/table>\n<\/div>\n<p><font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u0426\u0438\u0444\u0440\u044b \u0432 \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043e\u043b\u043e\u043d\u043a\u0435 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442 \u0432 \u043a\u0430\u043a\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0447\u0442\u0435\u043d\u0438\u044f \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 ffh.<\/font><font color=\"#BFBFBF\">]<\/font><\/p>\n<p>  <b>2. \u0427\u0442\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u0431\u043b\u043e\u043a\u0430\u043c\u0438 \u043f\u043e 4 \u0431\u0430\u0439\u0442\u0430 <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 \u2014 \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 (1 \u041c\u0431)<\/font><font color=\"#BFBFBF\">]<\/font><\/b>  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<tr>\n<td>ffh <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u0440\u0430\u0437\u043c\u0435\u0440 \u0431\u0443\u0444\u0435\u0440\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e (32 \u041a\u0431)<\/font><font color=\"#BFBFBF\">]<\/font><\/td>\n<td>1x<\/td>\n<\/tr>\n<tr>\n<td>ffh \u0441 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0431\u0443\u0444\u0435\u0440\u0430 4 \u041a\u0431<\/td>\n<td>1.4x<\/td>\n<\/tr>\n<tr>\n<td>C (fread)<\/td>\n<td>11x<\/td>\n<\/tr>\n<tr>\n<td>C++ (read)<\/td>\n<td>11x<\/td>\n<\/tr>\n<tr>\n<td>C (fread) \u0441 \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u0435\u0439 at_eof()<\/td>\n<td>24x<\/td>\n<\/tr>\n<tr>\n<td>C++ (read) \u0441 \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u0435\u0439 at_eof() \u0447\u0435\u0440\u0435\u0437 unget()<\/td>\n<td>30x<\/td>\n<\/tr>\n<tr>\n<td>C++ (read) \u0441 \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u0435\u0439 at_eof() \u0447\u0435\u0440\u0435\u0437 peek()<\/td>\n<td>20x<\/td>\n<\/tr>\n<\/table>\n<\/div>\n<p><b>3. \u0427\u0442\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 <a href=\"http:\/\/wiki.puzzlers.org\/pub\/wordlists\/unixdict.txt\" rel=\"nofollow noopener noreferrer\">unixdict.txt<\/a> \u043f\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c<\/b>  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<tr>\n<td>ffh (read_line \u0447\u0435\u0440\u0435\u0437 read_until)<\/td>\n<td>1x<\/td>\n<\/tr>\n<tr>\n<td>ffh (<a href=\"https:\/\/github.com\/alextretyak\/file_for_humans\/blob\/master\/perf_tests\/read_line.cpp#L3-L16\" rel=\"nofollow noopener noreferrer\">read_line \u0447\u0435\u0440\u0435\u0437 read_byte<\/a>)<\/td>\n<td>1.3x<\/td>\n<\/tr>\n<tr>\n<td>ffh (read_line \u0447\u0435\u0440\u0435\u0437 read_until) \u0441 \u0431\u0443\u0444\u0435\u0440\u043e\u043c 4 \u041a\u0431<\/td>\n<td>1.2x<\/td>\n<\/tr>\n<tr>\n<td>C (fgets)<\/td>\n<td>2.5x<\/td>\n<\/tr>\n<tr>\n<td>C (fgets) \u0441 \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u0435\u0439 at_eof()<\/td>\n<td>4.5x<\/td>\n<\/tr>\n<tr>\n<td>C++ (getline)<\/td>\n<td>5x<\/td>\n<\/tr>\n<tr>\n<td>C++ (getline) \u0441 \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u0435\u0439 at_eof() \u0447\u0435\u0440\u0435\u0437 unget()<\/td>\n<td>8x<\/td>\n<\/tr>\n<tr>\n<td>C++ (getline) \u0441 \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u0435\u0439 at_eof() \u0447\u0435\u0440\u0435\u0437 peek()<\/td>\n<td>6x<\/td>\n<\/tr>\n<\/table>\n<\/div>\n<p>\u0412\u0441\u0435 \u0442\u0435\u0441\u0442\u044b \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b\u0438\u0441\u044c \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 MSVC 2019.<\/p>\n<p>  \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e, \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f <code>read_line()<\/code> \u0447\u0435\u0440\u0435\u0437 <code>read_until()<\/code> \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 <code>read_byte()<\/code> \u043d\u0435\u043d\u0430\u043c\u043d\u043e\u0433\u043e. \u0410 \u0432\u043e\u0442 \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u044f <code>at_eof()<\/code> \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 \u0421\u0438 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u0435\u0442 \u0434\u0430\u0436\u0435 \u0447\u0442\u0435\u043d\u0438\u0435 \u043f\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c, \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u044f \u0443\u0436\u0435 \u043e \u043f\u043e\u0431\u0430\u0439\u0442\u043e\u0432\u043e\u043c \u0447\u0442\u0435\u043d\u0438\u0438.<\/p>\n<p>  \u041f\u043e\u0447\u0435\u043c\u0443 \u044f \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0442\u0435\u0441\u0442\u044b \u2018ffh \u0441 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0431\u0443\u0444\u0435\u0440\u0430 4 \u041a\u0431\u2019 \u2014 \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0431\u0443\u0444\u0435\u0440\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0447\u0442\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432\/\u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0432 C\/C++ \u0432 MSVC 2019.<\/p>\n<p>  \u0412\u043e\u043e\u0431\u0449\u0435 \u0436\u0435, \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 crt (C runtime library), \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c MSVC 2019, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u043e\u0441\u044c \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043f\u0438\u0441\u0430\u043b\u0441\u044f \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0430 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0441\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u0436\u0451\u0441\u0442\u043a\u0438\u0445 \u0434\u0438\u0441\u043a\u043e\u0432 \u0441 512 \u0431\u0430\u0439\u0442 \u043d\u0430 4 \u041a\u0431 \u043e\u043a\u043e\u043b\u043e 14 \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 (<a href=\"https:\/\/web.archive.org\/web\/20221218142523\/https:\/\/www.seagate.com\/blog\/advanced-format-4k-sector-hard-drives-master-ti\/\" rel=\"nofollow noopener noreferrer\">\u0446\u0438\u0442\u0430\u0442\u0430:<\/a> <i>\u00abAround 2010, hard drive companies began migrating away from the legacy sector size of 512 bytes to a larger, more efficient sector size of 4096 bytes, generally referred to as 4K sectors and now referred to as the Advanced Format\u00bb<\/i>), \u0430 \u0442\u043e \u0438 \u0440\u0430\u043d\u044c\u0448\u0435 \u2014 \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0430 \u0433\u043e\u0441\u043f\u043e\u0434\u0441\u0442\u0432\u0430 512-\u0431\u0430\u0439\u0442\u043d\u044b\u0445 \u0441\u0435\u043a\u0442\u043e\u0440\u043e\u0432. \u0422\u0430\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u044b\u0437\u043e\u0432 fseek \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u0431\u0443\u0444\u0435\u0440\u0430 \u0447\u0442\u0435\u043d\u0438\u044f \u0441 4096 \u0431\u0430\u0439\u0442 \u0434\u043e 512 \u0431\u0430\u0439\u0442 (\u043a\u0430\u043a \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 fseek.cpp: \u00abdecrease the _bufsiz so that the next call to *_read_* won&#8217;t cost quite so much\u2026 since we don&#8217;t know what the user will do next with the file.\u00bb). \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0434\u0430\u0436\u0435 \u043d\u0435 \u0441\u0430\u043c\u044b\u0445 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445 \u044d\u0442\u043e \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430, \u0442.\u043a. \u0441\u0435\u043a\u0442\u043e\u0440\u0430 \u0432 \u043b\u044e\u0431\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u043c \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f HDD\/SSD \u0438\u043c\u0435\u044e\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u043d\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 4 \u041a\u0431.<\/p>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f fgetc\/get \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u0430, \u0447\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0434\u0430\u0436\u0435 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0431\u0443\u0444\u0435\u0440\u0430 \u0432 1 \u041c\u0431 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e.<\/p>\n<h3>\u041e\u0431\u0437\u043e\u0440 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439<\/h3>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u0447\u0442\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u0431\u0438\u0442\u044b \u043d\u0430 \u0434\u0432\u0435 \u0433\u0440\u0443\u043f\u043f\u044b: \u0447\u0442\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u0447\u0442\u0435\u043d\u0438\u0435 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043f\u0440\u0438\u0437\u043d\u0430\u043a <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b \u0438\u043b\u0438 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0439<\/font><font color=\"#BFBFBF\">]<\/font> \u043f\u0440\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 \u0444\u0430\u0439\u043b\u0430 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e, \u0442.\u043a. \u044d\u0442\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u044e \u043e\u0448\u0438\u0431\u043e\u043a. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 <a href=\"https:\/\/stackoverflow.com\/questions\/32807001\/stdifstreamread-reading-less-than-requested-and-setting-failbit-for-no-obv\" title=\"&lt;- google:\u2018c++ read less than requested\u2019\" rel=\"nofollow noopener noreferrer\">\u044d\u0442\u043e\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u0435 \u043d\u0430 Stack Overflow<\/a> \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0437\u0430\u0431\u044b\u043b \u0443\u043a\u0430\u0437\u0430\u0442\u044c <code>ios_base::binary<\/code> \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435 <code>std::ifstream<\/code>, \u0430 \u043c\u0435\u0442\u043e\u0434 <code>read()<\/code> \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e. (\u0412 ffh \u043f\u043e\u0434\u043e\u0431\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0430, \u0438 \u043f\u043e \u043a\u043e\u0434\u0443 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e <code>read_bytes()<\/code> \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u0435 \u0447\u0442\u0435\u043d\u0438\u0435, \u0430 <code>read_text()<\/code> \u0438\u043b\u0438 <code>read_line()<\/code> \u0447\u0438\u0442\u0430\u0435\u0442 \u0442\u0435\u043a\u0441\u0442. <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u0412 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043a\u0430\u043a \u0432 Python {\u0442\u043e \u0435\u0441\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0440\u0435\u0436\u0438\u043c\u0430 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0444\u0430\u0439\u043b\u0430 (\u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0439 \u0438\u043b\u0438 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439) \u043c\u0435\u043d\u044f\u043b\u0441\u044f \u0442\u0438\u043f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>read()<\/code>} \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0438\u0437-\u0437\u0430 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u0438, \u0442.\u043a. ffh \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043d\u0430 C++.<\/font><font color=\"#BFBFBF\">]<\/font>)<\/p>\n<p>  \u0412\u0441\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0447\u0442\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0443 UTF-8 BOM <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u0438 Python \u043e\u043d\u0430 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <code>utf_8_sig<\/code> \u2014 \u044d\u0442\u043e UTF-8 \u0441 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u0442\u0440\u0451\u0445\u0431\u0430\u0439\u0442\u043e\u0432\u044b\u043c \u043c\u0430\u0440\u043a\u0435\u0440\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u0431\u0430\u0439\u0442\u043e\u0432 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0444\u0430\u0439\u043b\u0430, <abbr title=\"\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0411\u043b\u043e\u043a\u043d\u043e\u0442 \u0438\u043b\u0438 Microsoft Word, \u0430 \u0442\u0430\u043a\u0436\u0435 Microsoft Excel \u043f\u0440\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u043b\u0438\u0441\u0442\u0430 \u0432 csv-\u0444\u0430\u0439\u043b\">\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0442 Microsoft<\/abbr> \u043b\u044e\u0431\u044f\u0442 \u043f\u0438\u0445\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043c\u0430\u0440\u043a\u0435\u0440 \u043f\u0440\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u0444\u0430\u0439\u043b\u0430 \u0432 UTF-8<\/font><font color=\"#BFBFBF\">]<\/font>, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u0431\u0435\u0437 \u044f\u0432\u043d\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f<\/font><font color=\"#BFBFBF\">]<\/font> \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a \u0432 \u0441\u0442\u0438\u043b\u0435 Windows (\u043a\u043e\u0433\u0434\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0442\u0441\u044f \u043f\u0430\u0440\u043e\u0439 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 <code>\"\\r\\n\"<\/code>) \u2014 \u044d\u0434\u0430\u043a\u0430\u044f \u043e\u0431\u043b\u0435\u0433\u0447\u0451\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f <a href=\"https:\/\/docs.python.org\/3\/glossary.html#term-universal-newlines\" title=\"-> https:\/\/peps.python.org\/pep-0278\/&#187; rel=&#187;nofollow noopener noreferrer&#187;>universal newlines<\/a> \u0438\u0437 Python \u2014 \u0432 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0445 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u043e\u043a\u0430\u0445\\strings, \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0441\u0442\u0440\u043e\u043a\u0438\\lines \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0442\u0441\u044f \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0434\u043d\u0438\u043c \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u043c <code>\\n<\/code>.<\/p>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u0447\u0442\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432:<\/p>\n<ul>\n<li><b>read_text()<\/b> \u2014 \u0447\u0438\u0442\u0430\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432 \u0432\u0438\u0434\u0435 <code>std::string<\/code> (\u0431\u0443\u0444\u0435\u0440 \u0447\u0442\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u2014 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u0441\u0440\u0430\u0437\u0443 \u0432 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443); \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>read_text()<\/code> \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0447\u0442\u043e \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0441\u0430\u043c\u043e\u043c \u043d\u0430\u0447\u0430\u043b\u0435 \u0444\u0430\u0439\u043b\u0430 (\u0442.\u0435. \u0447\u0442\u043e \u0447\u0442\u0435\u043d\u0438\u0439 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u0435\u0449\u0451 \u043d\u0435 \u0431\u044b\u043b\u043e), \u0438 \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a (\u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \u043d\u0435 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <b>read_text_to_end()<\/b> \u2014 \u043e\u043d\u0430 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043c, \u0447\u0442\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438);<\/li>\n<li><b>read_until(<\/b>delim, keep_delim = false<b>)<\/b> \u2014 \u0447\u0438\u0442\u0430\u0435\u0442 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0432 \u0441\u0442\u0440\u043e\u043a\u0443 \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c delim \u0438\u043b\u0438 \u043a\u043e\u043d\u0435\u0446 \u0444\u0430\u0439\u043b\u0430, \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u044d\u0442\u0443 \u0441\u0442\u0440\u043e\u043a\u0443. \u0415\u0441\u043b\u0438 keep_delim \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432 <code>true<\/code>, \u0441\u0438\u043c\u0432\u043e\u043b \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0432 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435;<\/li>\n<li><b>read_line(<\/b>keep_newline = false<b>)<\/b> \u2014 \u0447\u0438\u0442\u0430\u0435\u0442 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0432 \u0441\u0442\u0440\u043e\u043a\u0443 \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442 \u0441\u0438\u043c\u0432\u043e\u043b \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 (<code>\\n<\/code>) \u0438\u043b\u0438 \u043a\u043e\u043d\u0435\u0446 \u0444\u0430\u0439\u043b\u0430, \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u044d\u0442\u0443 \u0441\u0442\u0440\u043e\u043a\u0443. \u0414\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438 \u2014 \u0447\u0438\u0442\u0430\u0435\u0442 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0435\u0451. \u0415\u0441\u043b\u0438 keep_newline \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432 <code>true<\/code>, \u0441\u0438\u043c\u0432\u043e\u043b \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0432 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435;<\/li>\n<li><b>read_line_reae(<\/b>keep_newline = false<b>)<\/b> \u2014 \u0447\u0438\u0442\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e <code>read_line()<\/code>, \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 EOF indicator (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u043c <b>eof_passed()<\/b> <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u044d\u0442\u043e \u0430\u043d\u0430\u043b\u043e\u0433 <code>eof()<\/code> \u0438\u0437 C++<\/font><font color=\"#BFBFBF\">]<\/font>), \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0435 \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u043e\u0433\u0434\u0430 \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0443\u0436\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442 \u043a\u043e\u043d\u0435\u0446 \u0444\u0430\u0439\u043b\u0430; \u0434\u0430\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043a\u043e\u0434\u0430 \u0447\u0442\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \u0441 C++\/Python\/Rust: <code>read_line_reae()<\/code> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 <code>std::getline()<\/code> \u0438\u0437 C++, \u0430 <code>read_line_reae(true)<\/code> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 <code>readline()<\/code> \u0432 Python \u0438 <code>read_line()<\/code> \u0432 Rust;<\/li>\n<li><b>read_char()<\/b> \u2014 \u0447\u0438\u0442\u0430\u0435\u0442 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u0441\u0438\u043c\u0432\u043e\u043b \u0432 \u0432\u0438\u0434\u0435 \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u042e\u043d\u0438\u043a\u043e\u0434\u0430 (Unicode code point); \u0442\u0438\u043f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u2014 <code>char32_t<\/code>.<\/li>\n<\/ul>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u0447\u0442\u0435\u043d\u0438\u044f \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432:<\/p>\n<ul>\n<li><b>read_bytes()<\/b> \u2014 \u0447\u0438\u0442\u0430\u0435\u0442 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432 \u0432\u0438\u0434\u0435 <code>std::vector&lt;uint8_t><\/code> (\u0431\u0443\u0444\u0435\u0440 \u0447\u0442\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u2014 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u0441\u0440\u0430\u0437\u0443 \u0432 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0439 vector); \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>read_bytes()<\/code> \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0447\u0442\u043e \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0441\u0430\u043c\u043e\u043c \u043d\u0430\u0447\u0430\u043b\u0435 \u0444\u0430\u0439\u043b\u0430 (\u0442.\u0435. \u0447\u0442\u043e \u0447\u0442\u0435\u043d\u0438\u0439 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u0435\u0449\u0451 \u043d\u0435 \u0431\u044b\u043b\u043e), \u0438 \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a (\u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \u043d\u0435 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <b>read_bytes_to_end()<\/b> \u2014 \u043e\u043d\u0430 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043c, \u0447\u0442\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438);<\/li>\n<li><b>read_bytes(<\/b>count<b>)<\/b> \u2014 \u0447\u0438\u0442\u0430\u0435\u0442 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 count \u0431\u0430\u0439\u0442 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043c\u0430\u0441\u0441\u0438\u0432 \u0438\u0437 \u044d\u0442\u0438\u0445 count \u0431\u0430\u0439\u0442 \u0432 \u0432\u0438\u0434\u0435 <code>std::vector&lt;uint8_t><\/code>;<\/li>\n<li><b>read_bytes<\/b>&lt;count<b>>()<\/b> \u2014 \u0447\u0438\u0442\u0430\u0435\u0442 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 count \u0431\u0430\u0439\u0442 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043c\u0430\u0441\u0441\u0438\u0432 \u0438\u0437 \u044d\u0442\u0438\u0445 count \u0431\u0430\u0439\u0442 \u0432 \u0432\u0438\u0434\u0435 <code>std::array&lt;uint8_t, count><\/code> <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">std::array, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 std::vector, \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u0442\u0435\u043a\u0435, \u0442.\u0435. \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0430\u043b\u043b\u043e\u043a\u0430\u0446\u0438\u0438 \u043f\u0430\u043c\u044f\u0442\u0438<\/font><font color=\"#BFBFBF\">]<\/font>;<\/li>\n<li><b>read_struct(<\/b>s<b>)<\/b> \u2014 \u0447\u0438\u0442\u0430\u0435\u0442 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0445 \u0431\u0430\u0439\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u2014 <code>sizeof(s)<\/code><\/font><font color=\"#BFBFBF\">]<\/font> \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0435\u0451 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 <code>s<\/code>, \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044f;<\/li>\n<li><b>read_bytes(<\/b>p, count<b>)<\/b> \u2014 \u0447\u0438\u0442\u0430\u0435\u0442 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 count \u0431\u0430\u0439\u0442 \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0438\u0445 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443\/\u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044e p;<\/li>\n<li><b>read_bytes_at_most(<\/b>p, count<b>)<\/b> \u2014 \u0447\u0438\u0442\u0430\u0435\u0442 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u043d\u0435 \u0431\u043e\u043b\u0435\u0435 count \u0431\u0430\u0439\u0442 \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0438\u0445 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443\/\u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044e p, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0445 \u0431\u0430\u0439\u0442 (\u044d\u0442\u043e \u0430\u043d\u0430\u043b\u043e\u0433 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>read()<\/code> \u0438\u0437 C++\/Rust);<\/li>\n<li><b>read_bytes_at_most(<\/b>count<b>)<\/b> \u2014 \u0447\u0438\u0442\u0430\u0435\u0442 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u043d\u0435 \u0431\u043e\u043b\u0435\u0435 count \u0431\u0430\u0439\u0442 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043c\u0430\u0441\u0441\u0438\u0432 \u0438\u0437 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0445 \u0431\u0430\u0439\u0442 \u0432 \u0432\u0438\u0434\u0435 <code>std::vector&lt;uint8_t><\/code> (\u0440\u0430\u0437\u043c\u0435\u0440\/\u0434\u043b\u0438\u043d\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u0435\u043d\u044c\u0448\u0435 count, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 <code>read_bytes(count)<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u0447\u0438\u0442\u0430\u0435\u0442 count \u0431\u0430\u0439\u0442, \u043b\u0438\u0431\u043e \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c); \u044d\u0442\u043e \u0430\u043d\u0430\u043b\u043e\u0433 <code>read(count)<\/code> \u0432 Python;<\/li>\n<li><b>read_byte()<\/b> \u2014 \u0447\u0438\u0442\u0430\u0435\u0442 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u0431\u0430\u0439\u0442; \u0442\u0438\u043f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u2014 <code>uint8_t<\/code>.<\/li>\n<\/ul>\n<p>  \u0414\u043b\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u0435\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434 <b>open()<\/b>, \u043e\u0434\u043d\u0430\u043a\u043e \u044f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430. \u041c\u0435\u0442\u043e\u0434 <code>open()<\/code>, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430, \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u0440\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 \u0444\u0430\u0439\u043b\u0430 \u043d\u0435 \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 <code>FileOpenError<\/code>, \u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <code>false<\/code>. \u0415\u0441\u043b\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0444\u0430\u0439\u043b \u043d\u0435 \u0441\u0440\u0430\u0437\u0443 <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438\/\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0444\u0430\u0439\u043b\u0430<\/font><font color=\"#BFBFBF\">]<\/font>, \u043d\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u0430 <code>open()<\/code> \u043d\u0435 \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442, \u0442\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0432\u043c\u0435\u0441\u0442\u043e <code>f.open(fname);<\/code> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c <code>f = IFile(fname);<\/code>.<\/p>\n<p>  \u0418\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0432 UTF-8, \u0442\u0430\u043a \u0438 \u0432 UTF-16. \u041f\u0435\u0440\u0432\u0430\u044f \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u043e\u0434\u043d\u043e\u0439 \u0434\u043b\u044f Linux, \u0430 \u0432\u0442\u043e\u0440\u0430\u044f \u2014 \u0434\u043b\u044f Windows, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 ffh \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u0431\u0435 \u044d\u0442\u0438 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0438.<\/p>\n<p>  \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f <b>tell()<\/b> \u0438 <b>seek()<\/b>. <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442 <code>origin<\/code>\/<code>whence<\/code> \u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>seek()<\/code>, \u043a \u0441\u043b\u043e\u0432\u0443, \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442: \u043d\u0435 \u0432\u0438\u0436\u0443 \u0432 \u043d\u0451\u043c \u0441\u043c\u044b\u0441\u043b\u0430, \u043a\u043e\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0435 <code>tell()<\/code> \u0438 <code>get_file_size()<\/code> (\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0435\u0449\u0451 \u0438 \u0434\u043b\u044f <abbr title=\"\u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (SetFilePointer\/SetFilePointerEx \u0432 Windows \u0438 lseek \u0432 Linux) \u043d\u0435 \u0441\u0447\u0438\u0442\u0430\u044e\u0442 \u0437\u0430 \u043e\u0448\u0438\u0431\u043a\u0443 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u043a\u043e\u043d\u0446\u0430 \u0444\u0430\u0439\u043b\u0430:  >\u2018SetFilePointer function (fileapi.h)\u2019[https:\/\/learn.microsoft.com\/en-us\/windows\/win32\/api\/fileapi\/nf-fileapi-setfilepointer]:\u2018 It is not an error to set a file pointer to a position beyond the end of the file.\u2019  >\u2018lseek(2) \u2014 Linux manual page\u2019[https:\/\/man7.org\/linux\/man-pages\/man2\/lseek.2.html]:\u2018        lseek() allows the file offset to be set beyond the end of the        file (but this does not change the size of the file).\u2019  \u0415\u0441\u043b\u0438 \u0444\u0430\u0439\u043b \u0431\u044b\u043b \u043e\u0442\u043a\u0440\u044b\u0442 \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438, \u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u043e\u043d\u044f\u0442\u044c \u043c\u043e\u0436\u043d\u043e. \u041d\u043e \u043f\u0440\u0438 \u0447\u0442\u0435\u043d\u0438\u0438 \u044d\u0442\u043e \u044f\u0432\u043d\u044b\u0439 \u043f\u0440\u0438\u0437\u043d\u0430\u043a \u043e\u0448\u0438\u0431\u043a\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, ffh \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 SeekFailed. (\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, `get_file_size()` \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 [\u0434\u043b\u044f \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043d\u043e\u0432\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u043d\u0435 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430].)&#187;>\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u0438<\/abbr>).<\/font><font color=\"#BFBFBF\">]<\/font> \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f <b>seek()<\/b> \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439, \u043a\u043e\u0433\u0434\u0430 \u043d\u043e\u0432\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u0431\u0443\u0444\u0435\u0440\u0430 \u2014 \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044f <code>buffer_pos<\/code>. \u0422.\u043a. \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 <code>SetFilePointer()<\/code> \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043e\u0440\u043e\u0433\u043e\u0439 (\u043f\u043e\u0440\u044f\u0434\u043a\u0430 3000 \u0442\u0430\u043a\u0442\u043e\u0432), \u0442\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u0433\u043e \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0447\u0442\u0435\u043d\u0438\u044f <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u043d\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u0431\u0443\u0444\u0435\u0440\u0430<\/font><font color=\"#BFBFBF\">]<\/font> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>ReadFile()<\/code> \u2014 <code>lpOverlapped<\/code>. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u043e\u0433\u0434\u0430 \u0444\u0430\u0439\u043b \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u043e\u043d\u043e \u044d\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0447\u0442\u0435\u043d\u0438\u044f\u043c\u0438 \u0432 \u0446\u0438\u043a\u043b\u0435 \u0434\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0447\u0442\u0435\u043d\u0438\u044f (\u043f\u0440\u0430\u0432\u0434\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0432\u043f\u0435\u0440\u0451\u0434). \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u0447\u0442\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430: \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430 \u0432\u0432\u043e\u0434\u0430 <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">stdin<\/font><font color=\"#BFBFBF\">]<\/font> \u043c\u043e\u0436\u043d\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u0442\u0430\u043a\u0436\u0435, \u043a\u0430\u043a \u0438 \u0444\u0430\u0439\u043b \u043d\u0430 \u0434\u0438\u0441\u043a\u0435.<\/p>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0447\u0442\u0435\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430 \u0431\u0435\u0437 \u0435\u0433\u043e \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f \u2014 \u043c\u0435\u0442\u043e\u0434 <b>peek_byte()<\/b>. \u042f \u0434\u0443\u043c\u0430\u043b \u043d\u0430\u0434 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u043e\u043b\u0435\u0435 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 <code>peek_bytes(n)<\/code>, \u043d\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043d\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u0435 \u0431\u0443\u0444\u0435\u0440\u0430 \u0447\u0442\u0435\u043d\u0438\u044f: \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c \u0432 \u0431\u0443\u0444\u0435\u0440\u0435 \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u043d\u0435\u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0439 \u0431\u0430\u0439\u0442, \u0442\u043e\u0433\u0434\u0430 \u0432\u044b\u0437\u043e\u0432 <code>peek_bytes(2)<\/code> \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0431\u0443\u0444\u0435\u0440 \u0447\u0442\u0435\u043d\u0438\u044f, \u043a\u0443\u0434\u0430-\u0442\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043d\u0435\u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0439 \u0431\u0430\u0439\u0442, \u0430 \u043f\u043e\u0442\u043e\u043c \u0435\u0433\u043e \u0435\u0449\u0451 \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043a\u0430\u043a-\u0442\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u0447\u0442\u0435\u043d\u0438\u044f. \u0412 \u043e\u0431\u0449\u0435\u043c, \u044f \u0440\u0435\u0448\u0438\u043b \u043e\u0442\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0442\u0430\u043a\u043e\u0435 \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0444\u0430\u0439\u043b\u0430, \u0430 \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>seek()<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d (\u0441\u043c. \u0447\u0443\u0442\u044c \u0432\u044b\u0448\u0435). \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0430\u0432\u0442\u043e\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u0430 \u0444\u0430\u0439\u043b\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a:  <\/p>\n<pre><code class=\"cpp\">bool try_read_png(IFile &amp;f) {     if (memcmp(f.read_bytes&lt;8>().data(), \"\\x89PNG\\r\\n\\x1a\\n\", 8) != 0) {         f.seek(0);         return false;     }      ...     return true; }  bool try_read_bmp(IFile &amp;f) {     if (memcmp(f.read_bytes&lt;2>().data(), \"BM\", 2) != 0) {         f.seek(0);         return false;     }      ...     return true; } <\/code><\/pre>\n<p>\u041d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u044b \u0432 \u0441\u0430\u043c\u043e\u043c \u043d\u0430\u0447\u0430\u043b\u0435 \u0444\u0430\u0439\u043b\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0435\u0449\u0451 \u043f\u0440\u043e\u0449\u0435 \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043c\u0435\u0442\u043e\u0434 <b>starts_with()<\/b>:  <\/p>\n<pre><code class=\"cpp\">bool try_read_bmp(IFile &amp;f) {     if (!f.starts_with(\"BM\"))         return false;     ... } <\/code><\/pre>\n<p>  \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u0431\u0443\u0444\u0435\u0440\u0430 \u0447\u0442\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u043c\u0435\u0442\u043e\u0434\u043e\u043c <b>set_buffer_size()<\/b>. \u0412\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u043b\u044e\u0431\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0447\u0442\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430. \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0443\u0436\u0435 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430 \u0447\u0442\u0435\u043d\u0438\u044f \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>  \u0412 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, ffh \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u0437\u043d\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0442\u043e\u0434\u0430 <b>get_file_size()<\/b>, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 (<b>get_last_write_time()<\/b>) \u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f (<b>get_creation_time()<\/b>) \u0444\u0430\u0439\u043b\u0430. \u0412\u0440\u0435\u043c\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434 \u043f\u0440\u043e\u0448\u0435\u0434\u0448\u0438\u0445 \u0441 1 \u044f\u043d\u0432\u0430\u0440\u044f 1970 \u0433\u043e\u0434\u0430 (Unix epoch start). 64-\u0440\u0430\u0437\u0440\u044f\u0434\u043d\u043e\u0433\u043e \u0446\u0435\u043b\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u0441\u043e \u0437\u043d\u0430\u043a\u043e\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u0442\u044b\/\u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0434\u043e 2262 \u0433\u043e\u0434\u0430 <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u0438\u043b\u0438 \u0434\u043e 2554 \u0433\u043e\u0434\u0430 \u0435\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0447\u0438\u0441\u043b\u043e \u0431\u0435\u0437 \u0437\u043d\u0430\u043a\u0430 (\u0442\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0432 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Apple_File_System\" title=\"&lt;- GPT-4:\u2018What is the most popular file system?\u2019\" rel=\"nofollow noopener noreferrer\">APFS<\/a>), \u0438\u043b\u0438 \u0434\u043e <a href=\"https:\/\/en.wikipedia.org\/wiki\/Time_formatting_and_storage_bugs#Year_2446\" title=\"deferring the year 2038 problem to the year 2446\" rel=\"nofollow noopener noreferrer\">2446 \u0433\u043e\u0434\u0430<\/a> \u0435\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <abbr title=\"\u0418\u043b\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e-\u0434\u0440\u0443\u0433\u043e\u043c\u0443\/\u2018\u043e\u0441\u043e\u0431\u0435\u043d\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c\u2019 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0447\u0430\u0441\u0442\u044c \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441 {a,c,m}time_extra \u0432 ext4:  \u0415\u0441\u043b\u0438 (uint64_t)timestamp &lt; 0b11100000'00000000'00000000'00000000'00000000'00000000'00000000'00000000,    \u0442\u043e timestamp128 = (int128_t)(uint64_t)timestamp \u0418\u043d\u0430\u0447\u0435 timestamp128 = (int128_t)(int64_t)timestamp  \u0422\u0430\u043a\u0438\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u043e\u0442 1896 \u0434\u043e 2481 \u0433\u043e\u0434\u0430.  \u0414\u043b\u044f \u0447\u0435\u0433\u043e \u0437\u0430\u043c\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u0442\u0430\u043a\u0438\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438? \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0412\u0421\u0415 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0432 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 ext4 (\u043e\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u043e\u0442 1901 \u0434\u043e 2446 \u0433\u043e\u0434\u0430), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u043e\u0432 Linux \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 Debian (Ubuntu, Astra Linux), \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432 Android. [XFS \u0438\u043c\u0435\u0435\u0442 \u0441\u0445\u043e\u0436\u0438\u0439 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0432\u0440\u0435\u043c\u0451\u043d.]  \u0412 \u0447\u0451\u043c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u043c\u044b\u0441\u043b? \u0412 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c [\u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u043b\u044c\u0448\u0435] \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0435 \u043d\u044b\u043d\u0435\u0448\u043d\u0438\u0445 \u0441\u0438\u0441\u0442\u0435\u043c, \u043d\u0435 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u0434\u0430\u0442\u0443 [\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 (\u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0444\u0430\u0439\u043b\u044b, \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0441 \u0445\u043e\u0441\u0442-\u0441\u0438\u0441\u0442\u0435\u043c\u044b)].  \u0410 \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0434\u043e 1970 \u0433\u043e\u0434\u0430 [\u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438: \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0435\u0437\u0437\u043d\u0430\u043a\u043e\u0432\u043e\u0435 64-\u0440\u0430\u0437\u0440\u044f\u0434\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e]? \u0427\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0434\u0430\u0442\u0443 \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u0436\u0438\u0432\u0443\u0449\u0435\u0433\u043e \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430 (\u0435\u0441\u043b\u0438 \u0438 \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u0417\u0435\u043c\u043b\u0435 \u043b\u044e\u0434\u0438 \u0441\u0442\u0430\u0440\u0448\u0435 1896 \u0433\u043e\u0434\u0430 \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f, \u0441\u043e\u043c\u043d\u0435\u0432\u0430\u044e\u0441\u044c \u0447\u0442\u043e \u043e\u043d\u0438 \u0435\u0449\u0451 \u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u043c).\">\u0434\u0440\u0443\u0433\u043e\u0435<\/abbr> \u043d\u0430\u0447\u0430\u043b\u043e \u044d\u043f\u043e\u0445\u0438<\/font><font color=\"#BFBFBF\">]<\/font>, \u0447\u0442\u043e \u044f \u0441\u0447\u0438\u0442\u0430\u044e \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u043d\u0430 \u043d\u0430\u0448 \u0432\u0435\u043a \u0445\u0432\u0430\u0442\u0438\u0442 :)(: \u2026 \u0438, \u043e\u0442\u043a\u0440\u043e\u0432\u0435\u043d\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u044f \u0441\u0447\u0438\u0442\u0430\u044e, \u0447\u0442\u043e \u0441\u0438\u043d\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0441\u0442\u0443\u043f\u0438\u0442 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0440\u0430\u043d\u044c\u0448\u0435; \u0438 \u043d\u0443\u0436\u0435\u043d \u043b\u0438 \u043a\u043e\u043c\u0443-\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0441\u0435\u0439\u0447\u0430\u0441 \u043a\u043e\u0434 \u0432 \u044d\u043f\u043e\u0445\u0443 \u043f\u043e\u0441\u0442-\u0441\u0438\u043d\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u0438 \u2014 \u044d\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0432\u043e\u043f\u0440\u043e\u0441<abbr title=\"\u041a\u0430\u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0441\u0435\u0439\u0447\u0430\u0441 \u043a\u043e\u0434 \u043c\u043e\u0436\u0435\u0442 \u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u043c \u0432 \u044d\u043f\u043e\u0445\u0443 \u043f\u043e\u0441\u0442-\u0441\u0438\u043d\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u0438? \u041a\u0442\u043e \u0437\u043d\u0430\u0435\u0442, \u043a\u0430\u043a\u0438\u0435 \u0432\u043e\u043e\u0431\u0449\u0435 \u0442\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0443\u0442 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u044b... \u0427\u0442\u043e \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0435, \u043f\u0440\u0438\u0447\u0451\u043c \u0446\u0438\u0444\u0440\u043e\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u043d\u0430 \u0431\u0430\u0437\u0435 \u0442\u0440\u043e\u0438\u0447\u043d\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438 (\u0441\u043c. \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u00ab\u0421\u0435\u0442\u0443\u043d\u044c\u00bb).  [\u0424\u0438\u0448\u043a\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u0432 \u043d\u0430 \u0442\u0440\u043e\u0438\u0447\u043d\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0435 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u043d\u0438 \u0432\u043f\u043e\u043b\u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u044d\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u044b \u043d\u0430 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0435, \u0430 \u0432\u043e\u0442 \u0441\u044d\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u043e\u0438\u0447\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u043d\u0430 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u043c \u0442\u0430\u043a \u043b\u0435\u0433\u043a\u043e \u0443\u0436\u0435 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f.]\">&#8230;<\/abbr><\/font><font color=\"#BFBFBF\">]<\/font>.<br \/>  \u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u0439 <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u0434\u0430\u0436\u0435 \u0435\u0449\u0451 \u043d\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 ffh<\/font><font color=\"#BFBFBF\">]<\/font> \u044f \u043f\u0440\u0438\u0448\u0451\u043b \u043a \u0432\u044b\u0432\u043e\u0434\u0443, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0435, \u0442\u043e\u0447\u043d\u043e\u0435, \u0443\u0434\u043e\u0431\u043d\u043e\u0435 \u0438 \u0431\u044b\u0441\u0442\u0440\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438<\/font><font color=\"#BFBFBF\">]<\/font>:  <\/p>\n<ul>\n<li>\u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u043d\u043e <abbr title=\"\u0435\u0441\u043b\u0438 \u0434\u0430\u0442\u0430\/\u0432\u0440\u0435\u043c\u044f \u043b\u0435\u0436\u0438\u0442 \u0432 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0445 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445, \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0442.\u0435. \u0441 1677 \u043f\u043e 2262 \u0433\u043e\u0434\">\u0431\u0435\u0437 \u043f\u043e\u0442\u0435\u0440\u044c<\/abbr> \u043e\u0442\u0440\u0430\u0436\u0430\u0435\u0442<font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\/\u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442<\/font><font color=\"#BFBFBF\">]<\/font>\/\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0440\u0435\u043c\u044f, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0435 \u0432\u043e \u0432\u0441\u0435\u0445 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445:<br \/> \n<ul>\n<li>\u0432 Unix-\u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>clock_gettime<\/code> \u0438 <code>stat<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u0432\u0440\u0435\u043c\u044f \u0432 \u0432\u0438\u0434\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b <code>timespec<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0434\u0432\u0443\u0445 \u043f\u043e\u043b\u0435\u0439: <code>time_t tv_sec<\/code> \u0438 <code>long tv_nsec<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u043a <abbr title=\"\u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435 UnixNanoTime \u2014 \u0442\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f\/\u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a \u0442\u0440\u0438 \u0441\u043b\u043e\u0432\u0430: Unix, nano \u0438 time, \u0442.\u0435. \u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e Unix \u0438 nano \u2014 \u044d\u0442\u043e \u0434\u0432\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u043b\u043e\u0432\u0430 (\u0438 \u0435\u0441\u0442\u044c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 nano \u0434\u043b\u044f Unix), \u0438 \u0432 \u0438\u0442\u043e\u0433\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c \u043e \u2018time of Unix nano\u2019\">&#171;UnixNanotime&#187;<\/abbr>: <code>tv_sec * 1'000'000'000 + tv_nsec<\/code>;<\/li>\n<li>\u0432 Windows \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u0447\u043d\u043e\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>GetSystemTimePreciseAsFileTime()<\/code> \u0432 \u0432\u0438\u0434\u0435 <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/win32\/api\/minwinbase\/ns-minwinbase-filetime\" rel=\"nofollow noopener noreferrer\">FILETIME<\/a>, \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>GetFileTime()<\/code> \u0442\u0430\u043a\u0436\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u0440\u0435\u043c\u044f \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438\/\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \u0432 \u0432\u0438\u0434\u0435 FILETIME, \u0438\u043c\u0435\u044e\u0449\u0435\u0435 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0432 100 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434, \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u0441\u0447\u0451\u0442 \u0432\u0435\u0434\u0451\u0442\u0441\u044f \u043d\u0435 \u0441 1970, \u0430 \u0441 1601 \u0433\u043e\u0434\u0430, \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0434\u043b\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f FILETIME \u0432 &#171;UnixNanotime&#187; \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0439 <a href=\"https:\/\/stackoverflow.com\/questions\/51849819\/how-to-correctly-convert-unix-time-to-filetime-used-by-win32\" rel=\"nofollow noopener noreferrer\">\u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u0438<\/a>: <code>(filetime - 116444736000000000) * 100<\/code>;<\/li>\n<\/ul>\n<\/li>\n<li>\u0443\u0434\u043e\u0431\u0441\u0442\u0432\u043e \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043b\u0435\u0433\u043a\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u0430\u043c\u0438: \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0432\u044b\u0447\u0438\u0442\u0430\u043d\u0438\u0435 64-\u0440\u0430\u0437\u0440\u044f\u0434\u043d\u044b\u0445 \u0446\u0435\u043b\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0438 \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e; \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 &#171;UnixNanotime&#187; \u0432 time_t \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e, \u0442.\u043a. \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0435 \u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0443 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u044b \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u043d\u0430\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u0437\u0430\u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0430 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0435 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435.<\/li>\n<\/ul>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0442\u0438\u043f \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u0437 <code>std::chrono<\/code>? \u0410 \u043c\u043d\u043e\u0433\u043e \u043b\u0438 \u0438\u0437 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438, \u0437\u043d\u0430\u044e\u0449\u0438\u0445 C++, \u0441\u043c\u043e\u0433\u0443\u0442 \u043f\u043e \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0442\u0438\u043f? \u0414\u0443\u043c\u0430\u044e, \u0447\u0442\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e. :)(: <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0447\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043a\u0430\u0436\u0443\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043e\u043f\u0440\u043e\u0441\u0430.<\/font><font color=\"#BFBFBF\">]<\/font><br \/>  \u041d\u0443 \u043b\u0430\u0434\u043d\u043e, \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u0442\u0438\u043f \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432\u044b \u0437\u043d\u0430\u0435\u0442\u0435. \u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u043e \u0441\u0435\u0442\u0438 \u0438\u043b\u0438 \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u0444\u0430\u0439\u043b. \u0412 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0441 \u044d\u0442\u0438\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445 \u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 (: \u0441\u044e\u0440\u043f\u0440\u0438\u0437! \ud83d\ude42 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 chrono \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442.<br \/>  \u041f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e <code>time_t<\/code>? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u043d\u043e\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0441\u0435\u0439\u0447\u0430\u0441 \u044f\u0432\u043d\u043e \u043d\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e: \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430 \u043e\u0434\u043d\u0443 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u0441\u043e\u0437\u0434\u0430\u043b 100 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u0444\u0430\u0439\u043b\u044b \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f\/\u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438.<\/p>\n<h3>\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043e\u0448\u0438\u0431\u043e\u043a<\/h3>\n<p>  \u042d\u0442\u043e, \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u0441\u0430\u043c\u0430\u044f \u043d\u0435\u043f\u0440\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 ffh.<\/p>\n<p>  \u041d\u0435\u0442, \u044f, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0434\u0430\u0436\u0435 \u043f\u0440\u0435\u0434\u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0447\u0442\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0437\u043e\u0432\u0430 <code>close()<\/code>). \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0441\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0438 \u043e\u0448\u0438\u0431\u043e\u043a, \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0443\u0441\u0442\u044b\u043c\u0438 \u043a\u043b\u0430\u0441\u0441\u0430\u043c\u0438-\u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0430\u043c\u0438. \u0427\u0430\u0441\u0442\u0438\u0447\u043d\u043e, \u044d\u0442\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u044f \u043f\u043e\u043a\u0430 \u043d\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0441\u044f \u043a\u0430\u043a \u0438\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c (\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043b\u0438 \u0438\u0445 \u043e\u0442 \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u0438\u043b\u0438 \u043d\u0435\u0442) \u0438 \u043a\u0430\u043a\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0432 \u043d\u0438\u0445 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c. \u0410 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u0434\u043b\u044f \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043e\u0448\u0438\u0431\u043a\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0442\u0438\u043f \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0443 \u0441\u0442\u0435\u043a\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 <code>FileIsAlreadyOpened<\/code>, \u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043b\u0438\u0448\u043d\u0438\u0439 <code>open()<\/code>, \u0430 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 <code>AttemptToReadAClosedFile<\/code> \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0447\u0442\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \u043f\u043e\u0441\u043b\u0435 \u0435\u0433\u043e \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f).<\/p>\n<p>  \u0412 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u043e\u0442\u0432\u0435\u0447\u0443 \u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u00ab\u043f\u043e\u0447\u0435\u043c\u0443 \u0432 <a href=\"https:\/\/github.com\/alextretyak\/file_for_humans\" rel=\"nofollow noopener noreferrer\">\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 ffh<\/a> \u043d\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0442\u0435\u0441\u0442\u043e\u0432? \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0430\u0441\u044c, \u0447\u0442\u043e \u043b\u0438?\u00bb<br \/>  \u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0430\u0441\u044c. \u041f\u0440\u043e\u0441\u0442\u043e \u043a\u043e\u0434 \u0442\u0435\u0441\u0442\u043e\u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0440\u044f\u0448\u043b\u0438\u0432\u044b\u0439, \u0438 \u043c\u043d\u0435 \u0431\u044b\u043b\u043e \u0441\u0442\u044b\u0434\u043d\u043e \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439. :)(:<\/p>\n<p>  P.S. \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0442\u043e \u0440\u0430\u0437\u043c\u0435\u0440 \u0442\u0435\u043a\u0441\u0442\u0430 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 ffh \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432 \u043f\u043e\u043b\u0442\u043e\u0440\u0430 \u0440\u0430\u0437\u0430.<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><\/p>\n<div class=\"tm-article-poll-container\"><!--[--><\/p>\n<div class=\"tm-article-poll tm-article-poll_variant-bordered\">\n<div class=\"tm-notice tm-notice_positive tm-article-poll__notice\"><!----><\/p>\n<div class=\"tm-notice__inner\"><!----><\/p>\n<div class=\"tm-notice__content\" data-test-id=\"notice-content\"><!--[--><span>\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a rel=\"nofollow\" href=\"\/kek\/v1\/auth\/habrahabr\/?back=\/ru\/articles\/797321\/&#038;hl=ru\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/span><!--]--><\/div>\n<\/div>\n<\/div>\n<p><!--[--><\/p>\n<div class=\"tm-article-poll__header\">\u041a\u0430\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e std::chrono \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u0447\u043d\u043e\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438?<\/div>\n<div class=\"tm-article-poll__answers\"><!--[--><\/p>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">1.8% <\/span><span class=\"tm-article-poll__answer-label\">std::chrono::system_time()<\/span><span class=\"tm-article-poll__answer-votes\">2<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 1.8%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">2.7% <\/span><span class=\"tm-article-poll__answer-label\">std::chrono::system_time::current()<\/span><span class=\"tm-article-poll__answer-votes\">3<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 2.7%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">10.81% <\/span><span class=\"tm-article-poll__answer-label\">std::chrono::system_time::now()<\/span><span class=\"tm-article-poll__answer-votes\">12<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 10.81%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">0.9% <\/span><span class=\"tm-article-poll__answer-label\">std::chrono::system_clock::time()<\/span><span class=\"tm-article-poll__answer-votes\">1<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 0.9%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">16.22% <\/span><span class=\"tm-article-poll__answer-label\">std::chrono::system_clock::now()<\/span><span class=\"tm-article-poll__answer-votes\">18<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 16.22%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">1.8% <\/span><span class=\"tm-article-poll__answer-label\">std::chrono::clock::system_time()<\/span><span class=\"tm-article-poll__answer-votes\">2<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 1.8%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">13.51% <\/span><span class=\"tm-article-poll__answer-label\">std::chrono::high_resolution_timer::now()<\/span><span class=\"tm-article-poll__answer-votes\">15<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 13.51%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">2.7% <\/span><span class=\"tm-article-poll__answer-label\">std::chrono::high_resolution_clock::time()<\/span><span class=\"tm-article-poll__answer-votes\">3<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 2.7%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent tm-article-poll__answer-percent_winning\">49.55% <\/span><span class=\"tm-article-poll__answer-label\">std::chrono::high_resolution_clock::now()<\/span><span class=\"tm-article-poll__answer-votes\">55<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress tm-article-poll__answer-progress_winning\" style=\"width: 49.55%\"><\/div>\n<\/div>\n<\/div>\n<p><!--]--><\/div>\n<div class=\"tm-article-poll__stats\"> \u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b\u0438 111 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.   \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u043b\u0438\u0441\u044c 53 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. <\/div>\n<p><!--]--><\/div>\n<div class=\"tm-article-poll tm-article-poll_variant-bordered\">\n<div class=\"tm-notice tm-notice_positive tm-article-poll__notice\"><!----><\/p>\n<div class=\"tm-notice__inner\"><!----><\/p>\n<div class=\"tm-notice__content\" data-test-id=\"notice-content\"><!--[--><span>\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a rel=\"nofollow\" href=\"\/kek\/v1\/auth\/habrahabr\/?back=\/ru\/articles\/797321\/&#038;hl=ru\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/span><!--]--><\/div>\n<\/div>\n<\/div>\n<p><!--[--><\/p>\n<div class=\"tm-article-poll__header\">\u041a\u0430\u043a\u043e\u0439 \u0442\u0438\u043f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f?<\/div>\n<div class=\"tm-article-poll__answers\"><!--[--><\/p>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">4.44% <\/span><span class=\"tm-article-poll__answer-label\">std::chrono::system_time<\/span><span class=\"tm-article-poll__answer-votes\">4<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 4.44%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">5.56% <\/span><span class=\"tm-article-poll__answer-label\">std::chrono::system_time::point<\/span><span class=\"tm-article-poll__answer-votes\">5<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 5.56%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">3.33% <\/span><span class=\"tm-article-poll__answer-label\">std::chrono::system_clock::time<\/span><span class=\"tm-article-poll__answer-votes\">3<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 3.33%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">16.67% <\/span><span class=\"tm-article-poll__answer-label\">std::chrono::system_clock::time_point<\/span><span class=\"tm-article-poll__answer-votes\">15<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 16.67%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">12.22% <\/span><span class=\"tm-article-poll__answer-label\">std::chrono::high_resolution_clock::time<\/span><span class=\"tm-article-poll__answer-votes\">11<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 12.22%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent tm-article-poll__answer-percent_winning\">57.78% <\/span><span class=\"tm-article-poll__answer-label\">std::chrono::high_resolution_clock::time_point<\/span><span class=\"tm-article-poll__answer-votes\">52<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress tm-article-poll__answer-progress_winning\" style=\"width: 57.78%\"><\/div>\n<\/div>\n<\/div>\n<p><!--]--><\/div>\n<div class=\"tm-article-poll__stats\"> \u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b\u0438 90 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.   \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u043b\u0438\u0441\u044c 49 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. <\/div>\n<p><!--]--><\/div>\n<div class=\"tm-article-poll tm-article-poll_variant-bordered\">\n<div class=\"tm-notice tm-notice_positive tm-article-poll__notice\"><!----><\/p>\n<div class=\"tm-notice__inner\"><!----><\/p>\n<div class=\"tm-notice__content\" data-test-id=\"notice-content\"><!--[--><span>\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a rel=\"nofollow\" href=\"\/kek\/v1\/auth\/habrahabr\/?back=\/ru\/articles\/797321\/&#038;hl=ru\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/span><!--]--><\/div>\n<\/div>\n<\/div>\n<p><!--[--><\/p>\n<div class=\"tm-article-poll__header\">\u0421\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u0430\u0439\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0439 \u0442\u0438\u043f?<\/div>\n<div class=\"tm-article-poll__answers\"><!--[--><\/p>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">6.82% <\/span><span class=\"tm-article-poll__answer-label\">4<\/span><span class=\"tm-article-poll__answer-votes\">6<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 6.82%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">35.23% <\/span><span class=\"tm-article-poll__answer-label\">8<\/span><span class=\"tm-article-poll__answer-votes\">31<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 35.23%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">2.27% <\/span><span class=\"tm-article-poll__answer-label\">12<\/span><span class=\"tm-article-poll__answer-votes\">2<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 2.27%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">7.95% <\/span><span class=\"tm-article-poll__answer-label\">16<\/span><span class=\"tm-article-poll__answer-votes\">7<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 7.95%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent tm-article-poll__answer-percent_winning\">47.73% <\/span><span class=\"tm-article-poll__answer-label\">\u0417\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/span><span class=\"tm-article-poll__answer-votes\">42<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress tm-article-poll__answer-progress_winning\" style=\"width: 47.73%\"><\/div>\n<\/div>\n<\/div>\n<p><!--]--><\/div>\n<div class=\"tm-article-poll__stats\"> \u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b\u0438 88 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.   \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u043b\u0438\u0441\u044c 52 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. <\/div>\n<p><!--]--><\/div>\n<div class=\"tm-article-poll tm-article-poll_variant-bordered\">\n<div class=\"tm-notice tm-notice_positive tm-article-poll__notice\"><!----><\/p>\n<div class=\"tm-notice__inner\"><!----><\/p>\n<div class=\"tm-notice__content\" data-test-id=\"notice-content\"><!--[--><span>\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a rel=\"nofollow\" href=\"\/kek\/v1\/auth\/habrahabr\/?back=\/ru\/articles\/797321\/&#038;hl=ru\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/span><!--]--><\/div>\n<\/div>\n<\/div>\n<p><!--[--><\/p>\n<div class=\"tm-article-poll__header\">\u0427\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 \u0442\u0438\u043f, \u043a\u0430\u043a\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u043d\u0451\u043c \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f?<\/div>\n<div class=\"tm-article-poll__answers\"><!--[--><\/p>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">5.56% <\/span><span class=\"tm-article-poll__answer-label\">\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0435\u043a\u0443\u043d\u0434 \u0441 \u043d\u0430\u0447\u0430\u043b\u0430 \u044d\u043f\u043e\u0445\u0438<\/span><span class=\"tm-article-poll__answer-votes\">5<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 5.56%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">16.67% <\/span><span class=\"tm-article-poll__answer-label\">\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434 \u0441 \u043d\u0430\u0447\u0430\u043b\u0430 \u044d\u043f\u043e\u0445\u0438<\/span><span class=\"tm-article-poll__answer-votes\">15<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 16.67%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">31.11% <\/span><span class=\"tm-article-poll__answer-label\">\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434 \u0441 \u043d\u0430\u0447\u0430\u043b\u0430 \u044d\u043f\u043e\u0445\u0438<\/span><span class=\"tm-article-poll__answer-votes\">28<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 31.11%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent tm-article-poll__answer-percent_winning\">46.67% <\/span><span class=\"tm-article-poll__answer-label\">\u0417\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/span><span class=\"tm-article-poll__answer-votes\">42<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress tm-article-poll__answer-progress_winning\" style=\"width: 46.67%\"><\/div>\n<\/div>\n<\/div>\n<p><!--]--><\/div>\n<div class=\"tm-article-poll__stats\"> \u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b\u0438 90 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.   \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u043b\u0438\u0441\u044c 43 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. <\/div>\n<p><!--]--><\/div>\n<div class=\"tm-article-poll tm-article-poll_variant-bordered\">\n<div class=\"tm-notice tm-notice_positive tm-article-poll__notice\"><!----><\/p>\n<div class=\"tm-notice__inner\"><!----><\/p>\n<div class=\"tm-notice__content\" data-test-id=\"notice-content\"><!--[--><span>\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a rel=\"nofollow\" href=\"\/kek\/v1\/auth\/habrahabr\/?back=\/ru\/articles\/797321\/&#038;hl=ru\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/span><!--]--><\/div>\n<\/div>\n<\/div>\n<p><!--[--><\/p>\n<div class=\"tm-article-poll__header\">\u0427\u0435\u043c \u0432\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0434\u0430\u0442\u044c \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b? :)(:<\/div>\n<div class=\"tm-article-poll__answers\"><!--[--><\/p>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">21.21% <\/span><span class=\"tm-article-poll__answer-label\">\u041d\u0438\u0447\u0435\u043c. \u042f \u043f\u043e\u043c\u043d\u044e \u044d\u0442\u043e \u043d\u0430\u0438\u0437\u0443\u0441\u0442\u044c. \u0422\u0430\u043a\u0438\u0435 \u0432\u0435\u0449\u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u043d\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0443\u0432\u0430\u0436\u0430\u044e\u0449\u0438\u0439 \u0441\u0435\u0431\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043d\u0430 C++!<\/span><span class=\"tm-article-poll__answer-votes\">21<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 21.21%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent tm-article-poll__answer-percent_winning\">62.63% <\/span><span class=\"tm-article-poll__answer-label\">\u041d\u0438\u0447\u0435\u043c. \u042f \u043d\u0435 \u043f\u043e\u043c\u043d\u044e \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0438\u0437\u0443\u0441\u0442\u044c [\u0430 \u0440\u0430\u0437\u0432\u0435 \u0434\u043e\u043b\u0436\u0435\u043d?]. \u041d\u0430\u0434\u0435\u044e\u0441\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0433\u0430\u0434\u0430\u0442\u044c.<\/span><span class=\"tm-article-poll__answer-votes\">62<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress tm-article-poll__answer-progress_winning\" style=\"width: 62.63%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">1.01% <\/span><span class=\"tm-article-poll__answer-label\">ISO C++ Standard [working draft \u0438\u043b\u0438 final, \u043d\u0435\u0432\u0430\u0436\u043d\u043e]<\/span><span class=\"tm-article-poll__answer-votes\">1<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 1.01%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">6.06% <\/span><span class=\"tm-article-poll__answer-label\">cppreference.com\/cplusplus.com<\/span><span class=\"tm-article-poll__answer-votes\">6<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 6.06%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">0% <\/span><span class=\"tm-article-poll__answer-label\">Stack Overflow<\/span><span class=\"tm-article-poll__answer-votes\">0<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 0%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">2.02% <\/span><span class=\"tm-article-poll__answer-label\">Google<\/span><span class=\"tm-article-poll__answer-votes\">2<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 2.02%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">1.01% <\/span><span class=\"tm-article-poll__answer-label\">\u042f\u043d\u0434\u0435\u043a\u0441<\/span><span class=\"tm-article-poll__answer-votes\">1<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 1.01%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">3.03% <\/span><span class=\"tm-article-poll__answer-label\">GPT-4 \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u0430\u044f LLM<\/span><span class=\"tm-article-poll__answer-votes\">3<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 3.03%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">3.03% <\/span><span class=\"tm-article-poll__answer-label\">\u0414\u0440\u0443\u0433\u043e\u0435<\/span><span class=\"tm-article-poll__answer-votes\">3<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 3.03%\"><\/div>\n<\/div>\n<\/div>\n<p><!--]--><\/div>\n<div class=\"tm-article-poll__stats\"> \u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b\u0438 99 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.   \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u043b\u0438\u0441\u044c 43 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. <\/div>\n<p><!--]--><\/div>\n<p><!--]--><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/797321\/\"> https:\/\/habr.com\/ru\/articles\/797321\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">  \u041f\u043e\u0432\u043e\u0434\u043e\u043c \u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0438 \u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 <a href=\"https:\/\/github.com\/alextretyak\/file_for_humans\" rel=\"nofollow noopener noreferrer\">\u043c\u0438\u043d\u0438-\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 ffh<\/a> \u0441\u0442\u0430\u043b\u043e \u043e\u0434\u043d\u043e \u0438\u0437 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0437\u0430\u0434\u0430\u043d\u0438\u0439 \u043f\u043e \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d\u0435 \u2018\u042f\u0437\u044b\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u2019, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f \u0432\u0435\u0434\u0443. \u0412 \u044d\u0442\u043e\u043c \u0437\u0430\u0434\u0430\u043d\u0438\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432\u0441\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u0437 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0422\u0430\u043a \u0432\u043e\u0442, \u0443 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432, \u0432\u044b\u0431\u0440\u0430\u0432\u0448\u0438\u0445 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u044f\u0437\u044b\u043a C++ <font color=\"#BFBFBF\">[<\/font><font color=\"gray\">\u044f\u0437\u044b\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u043c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u044f, \u043d\u043e \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u044e\u0442 C++ \u0438\u043b\u0438 Python<\/font><font color=\"#BFBFBF\">]<\/font>, \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u0438\u043d\u043e\u0433\u0434\u0430 \u0447\u0438\u0442\u0430\u043b\u0430\u0441\u044c \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u043b\u0438\u0448\u043d\u044f\u044f \u043f\u0443\u0441\u0442\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430. \u0412 \u043f\u0440\u043e\u0448\u043b\u044b\u0435 \u0433\u043e\u0434\u044b \u044f \u043d\u0435 \u043f\u0440\u0438\u0434\u0430\u0432\u0430\u043b \u044d\u0442\u043e\u043c\u0443 \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043d\u043e \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0440\u0430\u0437 \u0440\u0435\u0448\u0438\u043b \u0442\u0430\u043a\u0438 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u0447\u0451\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-369657","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/369657","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=369657"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/369657\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=369657"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=369657"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=369657"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}