{"id":335013,"date":"2022-06-26T15:00:19","date_gmt":"2022-06-26T15:00:19","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=335013"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=335013","title":{"rendered":"<span>C++ \u0440\u0430\u0437\u0432\u0435\u0434\u043a\u0430 \u043a\u0440\u043e\u0441\u0441-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 Linux-&gt;Windows<\/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-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e35\/e9d\/3da\/e35e9d3da99fc4f3b65928f3ae072409.png\" width=\"1078\" height=\"601\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e35\/e9d\/3da\/e35e9d3da99fc4f3b65928f3ae072409.png\"\/><figcaption><\/figcaption><\/figure>\n<p>    \u042d\u0442\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043d\u0430\u0447\u0430\u043b\u0430\u0441\u044c \u043a\u043e\u0433\u0434\u0430 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 VSCode \u0438\u0437 \u0437\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043d\u0430 \u0431\u043e\u0440\u0442\u0443 \u0441\u0442\u0430\u043b \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0443\u0434\u043e\u0431\u0435\u043d. \u0410 \u0438\u043c\u0435\u043d\u043d\u043e, \u00abnatizyskunk.sftp\u00bb \u043f\u043b\u0430\u0433\u0438\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0441\u044f \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 (S)FTP \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443, \u0438 \u0432\u043d\u043e\u0441\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440, \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0432 \u0444\u0430\u0439\u043b. \u0412\u0441\u0451 \u043d\u0435\u0447\u0435\u0433\u043e, \u0435\u0441\u043b\u0438 \u0431\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c \u043d\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0441\u044c \u0432 \u043a\u043e\u0440\u043d\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0432\u0437\u044f\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u041a\u043e\u0433\u0434\u0430 \u0443 \u0442\u0435\u0431\u044f \u0441 \u0434\u0435\u0441\u044f\u0442\u043e\u043a \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u0435\u0449\u0451 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0442\u0435\u0440\u043f\u0435\u0442\u044c, \u043d\u043e \u0431\u043e\u043b\u0435\u0435 70 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0438 \u043e\u043d\u0438 \u0432\u0441\u0435 \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445, \u0442\u043e \u043f\u0435\u0440\u0435\u043d\u043e\u0441 \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0430\u0440\u043e\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f, \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0440\u0430\u0437\u0434\u0440\u0430\u0436\u0451\u043d\u043d\u043e \u0438\u0441\u043a\u0430\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0443\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u0438 \u0441 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0435\u0439 \u043a\u043b\u0430\u0432\u0438\u0448 Ctrl+C, Ctrl+V, \u043c\u0435\u043d\u044f\u0442\u044c \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0435. \u0412 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043a\u043e\u043b\u043b\u0435\u0433\u0438 \u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u044b\u043c\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u043c\u0438 \u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u00abliximomo.sftp\u00bb, \u00abdoujinya.sftp-revived\u00bb. \u0418\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u044c \u0438\u0445 \u043d\u0430 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f, \u0447\u0442\u043e \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0430\u0440\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0435\u0433\u043e \u043a\u043e\u0434\u0430. \u041f\u0440\u043e\u0447\u0438\u0442\u0430\u0432 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u043e\u043d\u043d\u043e\u0435 \u0441\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u0432\u0441\u0435\u0445 \u0442\u0440\u0451\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u0445 \u0438 \u0432\u044b\u044f\u0441\u043d\u0438\u0432 \u0447\u0442\u043e \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u043d\u043e\u0441\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u043a\u043e\u0434 \u0431\u0435\u0437 \u0441\u043f\u0440\u043e\u0441\u0430. \u041f\u0440\u043e\u0431\u0440\u0430\u0432\u0448\u0438\u0441\u044c \u0432 \u0444\u0430\u0439\u043b \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0438 \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u0438 \u0432 VSCode \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043d\u0430 JS, \u0443\u0432\u0438\u0434\u0435\u043b \u043e\u0431\u0444\u0443\u0441\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 JS \u043a\u043e\u0434, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0442\u0440\u043e\u043a. \u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0438 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043e\u0431\u044a\u0451\u043c \u043a\u043e\u0434\u0430 \u0431\u0435\u0437 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9f5\/b1c\/d25\/9f5b1cd25b7fd710ba33a796222496d7.png\" width=\"1762\" height=\"920\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9f5\/b1c\/d25\/9f5b1cd25b7fd710ba33a796222496d7.png\"\/><figcaption><\/figcaption><\/figure>\n<p>    \u0417\u043d\u0430\u044f, \u0447\u0442\u043e \u043f\u043b\u0430\u0433\u0438\u043d \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0444\u0430\u0439\u043b \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u0432 \u043a\u043e\u0440\u043d\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c .vscode, \u044f \u0440\u0435\u0448\u0438\u043b \u043d\u0430\u0447\u0430\u0442\u044c \u0441 \u043f\u043e\u0438\u0441\u043a\u0430 \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430 \u0432 \u043a\u043e\u0434\u0435.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ceb\/5d2\/f8b\/ceb5d2f8bd04df3f9d642353f9d58607.png\" width=\"1760\" height=\"856\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ceb\/5d2\/f8b\/ceb5d2f8bd04df3f9d642353f9d58607.png\"\/><figcaption><\/figcaption><\/figure>\n<p>    \u0412\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0430\u0446\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u00abr\u00bb \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c (\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u00abt.CONFIG_PATH\u00bb) \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u00abt.CONGIF_FILENAME\u00bb . \u0421\u0442\u0440\u0430\u043d\u043d\u043e \u0447\u0442\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u00abjoin()\u00bb \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0443 js \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442. \u0415\u0441\u043b\u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u00abr\u00bb \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c. \u0421\u043a\u043e\u0440\u0435\u0439 \u0432\u0441\u0435\u0433\u043e \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u00abjoin()\u00bb \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0435, \u043d\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u044e \u0447\u0442\u043e \u0446\u0435\u043b\u044c \u044d\u0442\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c \u0447\u0442\u043e\u0431\u044b \u0441\u0431\u0438\u0442\u044c \u0441 \u0442\u043e\u043b\u043a\u0443 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f \u043a\u043e\u0434\u0430. \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0435 \u0441\u0442\u0440\u0430\u0448\u043d\u043e \u0438 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0435 \u00ab<em>string<\/em>.concat(<em>string1<\/em>, <em>string2<\/em>, \u2026, <em>stringX<\/em>)\u00bb.<\/p>\n<p>    \u0422\u0435\u043f\u0435\u0440\u044c \u044f \u0443\u0432\u0435\u0440\u0435\u043d, \u0447\u0442\u043e \u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u00abCONFIG_PATH\u00bb. \u0412 \u043f\u043e\u0438\u0441\u043a\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u0434\u0432\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u043f\u0435\u0440\u0432\u044b\u0439 \u0443\u0436\u0435 \u043c\u044b \u0432\u0438\u0434\u0435\u043b\u0438, \u0430 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0442\u0430\u043a\u0430\u044f-\u0436\u0435 \u043a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0430\u0446\u0438\u044f \u043a\u0430\u043a \u0432 \u043f\u0440\u043e\u0448\u043b\u044b\u0439 \u0440\u0430\u0437.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c62\/721\/72d\/c6272172da08f9577c18084e53679abd.png\" width=\"1758\" height=\"921\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c62\/721\/72d\/c6272172da08f9577c18084e53679abd.png\"\/><figcaption><\/figcaption><\/figure>\n<p>    \u0413\u0434\u0435 \u043f\u043e\u0442\u043e\u043c \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u0441\u043a\u0430\u0442\u044c \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0447\u0435\u0442\u0441\u044f, \u0434\u0430 \u0438 \u043d\u0435 \u0434\u0443\u043c\u0430\u044e \u0447\u0442\u043e \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f. \u0420\u0430\u0434\u0438 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430 \u0437\u0430\u043c\u0435\u043d\u0438\u043b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043d\u0430 \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u0434\u043e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0433\u0434\u0435 \u0431\u0443\u0434\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c. \u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 VSCode \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u043a\u043b\u0430\u0432\u0438\u0448 \u00abCtrl+Shift+p\u00bb \u043e\u0442\u043a\u0440\u043e\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u00ab>SFTP: Config\u00bb \u043f\u043b\u0430\u0433\u0438\u043d \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0444\u0430\u0439\u043b \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u043f\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u043f\u0443\u0442\u0438. \u0424\u0430\u0439\u043b \u0441\u0442\u0430\u043b \u043e\u0431\u0449\u0438\u043c \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u043b\u043e\u0441\u044c! \u042d\u0442\u043e \u043f\u043e\u0431\u0435\u0434\u0430! \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0434\u043e \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u0441\u044f \u044d\u0442\u0438\u043c \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0435\u043c \u0441 \u043a\u043e\u043b\u043b\u0435\u0433\u0430\u043c\u0438 \u0438 \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c \u0438\u0445 \u043e\u0442 \u043c\u0443\u0447\u0435\u043d\u0438\u0439.  <\/p>\n<p>    \u041d\u043e \u044f \u043d\u0435 \u044f \u0435\u0441\u043b\u0438 \u043d\u0435 \u0438\u0437\u0431\u0430\u0432\u043b\u044e \u0438\u0445 \u043e\u0442 \u0441\u0442\u043e\u043b\u044c \u0441\u043b\u0435\u0433\u043a\u0430 \u043d\u0435 \u0443\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443.  \u041f\u043e\u0434\u0443\u043c\u0430\u0432 \u043d\u0430\u0434 \u0432\u044b\u0431\u043e\u0440\u043e\u043c \u044f\u0437\u044b\u043a\u0430, \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0442\u0435\u0440\u044f\u0442\u044c \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u043d\u044b\u0439 \u043e\u043f\u044b\u0442, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438  \u0441 \u043d\u0438\u043c \u0443\u0436\u0435 \u043d\u0435\u0442, \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f \u043d\u0430 C++. \u041d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u043f\u0443\u0442\u044c, \u043f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0438 \u0447\u0442\u043e, \u043d\u0430 \u0443\u0436\u0435 \u0440\u043e\u0434\u043d\u044b\u0445 \u0434\u043b\u044f \u043c\u0435\u043d\u044f PHP \u0438\u043b\u0438 Python \u0437\u0430\u0434\u0430\u0447\u0443 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u043f\u0440\u043e\u0449\u0435 \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u0435\u0439, \u0435\u0441\u043b\u0438 C# \u0442\u043e \u0438 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0437\u0430\u043f\u0438\u043b\u0438\u0442\u044c \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c (\u043f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0438 \u0435\u0441\u043b\u0438 \u041e\u041f \u0431\u0443\u0434\u0435\u0442 Windows). \u0422\u0430\u043a \u043a\u0430\u043a \u0432 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u043d\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 Windows, \u0430 \u0434\u043e\u043c\u0430 \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u043f\u043e\u0434 Linux, \u0437\u0430\u0434\u0430\u0447\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0435\u0449\u0451 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0439. \u0422\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u043e\u043f\u044b\u0442\u0430 \u0441 \u043a\u0440\u043e\u0441-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0435\u0439 \u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e. \u0420\u0430\u0437\u0432\u0435\u0434\u043a\u0443 \u043d\u0430 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u043c\u043d\u0435 \u044f\u0437\u044b\u043a\u0430\u0445, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a Rust, Go, Ruby \u044f \u043e\u0441\u0442\u0430\u0432\u043b\u044e \u043d\u0430 \u043f\u043e\u0442\u043e\u043c.<\/p>\n<p>    \u0421 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0445\u043e\u0447\u0443 \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0434\u0438\u0442\u044c: &#8212; \u044f \u043d\u0435 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043d\u0430 C++, \u0438 \u0438\u0437\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u043d\u0438\u0436\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u043a\u0430\u043a \u0443\u0447\u0435\u0431\u043d\u043e\u0435 \u043f\u043e\u0441\u043e\u0431\u0438\u0435. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0443\u0447\u0438\u0448\u044c\u0441\u044f \u0447\u0435\u043c\u0443-\u0442\u043e \u043d\u043e\u0432\u043e\u043c\u0443, \u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435, \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0437\u0430\u043a\u0440\u0435\u043f\u0438\u0442\u044c \u0437\u043d\u0430\u043d\u0438\u044f.<\/p>\n<p> \u0414\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u043e\u0434 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 Windows \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 GNU C++ \u0434\u043b\u044f MinGW-w64. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0432 Ubuntu \/ Linux Mint \/ Debian \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"bash\">sudo apt update sudo apt install g++-mingw-w64<\/code><\/pre>\n<p>Makefile \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cmake\">#\u0414\u043b\u044f Windowd 32bit # CXX := i686-w64-mingw32-g++ #\u0414\u043b\u044f Windowd 64bit # CXX := x86_64-w64-mingw32-g++ # \u0414\u043b\u044f Linux CXX := g++  CXX_FLAGS := -Wall -Wextra -std=c++17 -ggdb  BIN := bin SRC := src INCLUDE := include LIB := lib   ifeq ($(CXX),x86_64-w64-mingw32-g++) DEFINE := WIN32=WIN32 EXECUTABLE := sftp_pat.exe else ifeq ($(CXX),i686-w64-mingw32-g++) DEFINE := WIN32=WIN32 EXECUTABLE := sftp_pat.exe else ifeq ($(CXX),g++) DEFINE := LINUX=LINUX EXECUTABLE := sftp_patch endif  LIBRARIES := -static-libstdc++ -static-libgcc -lstdc++fs   all: $(BIN)\/$(EXECUTABLE)  run: clean all clear .\/$(BIN)\/$(EXECUTABLE)  $(BIN)\/$(EXECUTABLE): $(SRC)\/*.cpp $(CXX) $(CXX_FLAGS) -I $(INCLUDE) -L $(LIB) $^ -o $@ $(LIBRARIES) -D $(DEFINE)  clean: -rm $(BIN)\/*<\/code><\/pre>\n<p>    \u0414\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0441\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0439  CXX \u0438 \u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435.<\/p>\n<p> <\/p>\n<p>    \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u0442\u043e\u0447\u043a\u0435 \u0432\u0445\u043e\u0434\u0430 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c main.cpp. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0442\u043e\u0438\u0442 \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0443 \u043d\u0430 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b. <\/p>\n<ol>\n<li>\n<p>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u043d\u0435\u043c\u0443 \u0432 home \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0439\u0442\u0438 \u043d\u0443\u0436\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0434\u043b\u044f \u043f\u0440\u0430\u0432\u043a\u0438 \u0438 \u043d\u0430\u0439\u0442\u0438 \u043c\u0435\u0441\u0442\u043e \u043f\u0440\u0430\u0432\u043a\u0438<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u0443\u0442\u044c \u043a \u043d\u043e\u0432\u043e\u043c\u0443 \u043c\u0435\u0441\u0442\u0443 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0438 \u0443\u0437\u043d\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439 \u043f\u043b\u0430\u0433\u0438\u043d \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f<\/p>\n<\/li>\n<li>\n<p>\u0412\u043d\u0435\u0441\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0444\u0430\u0439\u043b\u0435<\/p>\n<\/li>\n<\/ol>\n<p>\u0412\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e. \u042f \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u043b \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u043e\u0440\u043e\u0432\u043d\u0443 \u043d\u0430 \u0434\u0432\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 GetFileTarget \u0438 FileRewrite.   \u0424\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f main.cpp \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cpp\">\/**  * @file main.cpp  * @author Tolsedum (tolsedum@gmail.com)  * @brief Entry point  * @version 1.0  * @date 2022-06-12  *   * @copyright Copyright (c) 2022  *   *\/  #include \"GetFileTarget.hpp\" #include \"FileRewrite.hpp\"  int main() {     try{         GetFileTarget getFileTarget;         \/\/ \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u043d\u0435\u043c\u0443 \u0432 home \u0434\u0438\u0440\u0438\u043a\u0442\u043e\u0440\u0438\u044e         getFileTarget.jumpToDirectory();         \/\/ \u0414\u043b\u044f Windows \u0437\u0430\u0434\u0430\u0435\u0442 \u0440\u0435\u0436\u0438\u043c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u043b\u043e\u0433\u043e\u0442\u0438\u043f. \u0414\u043b\u044f Linux \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u043b\u043e\u0433\u043e\u0442\u0438\u043f.         getFileTarget.setMode();                  \/\/ \u041d\u0430\u0439\u0442\u0438 \u043d\u0443\u0436\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0434\u043b\u044f \u043f\u0440\u0430\u0432\u043a\u0438 \u0438 \u043d\u0430\u0439\u0442\u0438 \u043c\u0435\u0441\u0442\u043e \u043f\u0440\u0430\u0432\u043a\u0438         GenerelInformation fileDate = getFileTarget.getFilePosition();         FileRewrite fileRewrite(fileDate);          \/\/ \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u0443\u0442\u044c \u043a \u043d\u043e\u0432\u043e\u043c\u0443 \u043c\u0435\u0441\u0442\u0443 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0438 \u0443\u0437\u043d\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439 \u043f\u043b\u0430\u0433\u0438\u043d \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f         fileRewrite.getSettingsPatch();          \/\/ \u0412\u043d\u0435\u0441\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0444\u0430\u0439\u043b\u0435         fileRewrite.rewrite();            }catch(const my_char* error){         fn::printString(error);     }catch (my_stryng error) {         fn::printString(error);     }catch(const fs::filesystem_error&amp; e){         fn::printString(e.what());     }catch(std::exception &amp; e) {         fn::printString(e.what());     }     fn::pause(); return 0; }<\/code><\/pre>\n<p>    \u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432\u043e \u0432\u0441\u0435\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u0445 \u043c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u043e\u0431\u0449\u0438\u0439 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043e\u0431\u044a\u0435\u043a\u0442. \u0415\u0433\u043e \u044f \u043d\u0430\u0437\u0432\u0430\u043b \u00abGlobalIncluds\u00bb.<\/p>\n<pre><code class=\"cpp\">\/**  * @file GlobalIncluds.hpp  * @author Tolsedum (tolsedum@gmail.com)  * @brief Global include headers, var, structs and functins  * @version 0.1  * @date 2022-06-12  *   * @copyright Copyright (c) 2022  *   *\/ #pragma once #ifndef GLOBAL_INCLUDE #define GLOBAL_INCLUDE \"GLOBAL_INCLUDE\"   #include &lt;regex> #include &lt;iostream> #include &lt;string> #include &lt;string.h> #include &lt;fstream> #include &lt;experimental\/filesystem> #include &lt;vector>  #ifdef WIN32     #include &lt;direct.h>     #include &lt;fcntl.h>     typedef wchar_t my_char;     typedef std::wstring my_stryng; #else     #include \"unistd.h\"     typedef std::string my_stryng;     typedef char my_char; #endif   namespace fs = std::experimental::filesystem;  \/\/ \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442 \u043e\u0434\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0434\u0440\u0443\u0433\u043e\u043c\u0443 struct GenerelInformation{     public:         std::string tmp_file_name;         std::string file_path;         std::size_t pos_begin = 0;         std::size_t pos_end = 0;         short selected_number;         GenerelInformation(){};         ~GenerelInformation(){}; };  namespace fn{     #ifdef WIN32         inline std::string wstringToString(std::wstring w_str_to_convert){             std::wstring_convert&lt;std::codecvt_utf8&lt;wchar_t>, wchar_t> w_conv;             std::string ret_value = w_conv.to_bytes(w_str_to_convert);             return ret_value;         }         inline std::wstring stringToWstring(std::string str_to_convert){             std::wstring_convert&lt;std::codecvt_utf8_utf16&lt;wchar_t>, wchar_t> w_conv;             std::wstring ret_value = w_conv.from_bytes(str_to_convert);             return ret_value;         }     #endif \/\/ WIN32      \/\/ ----------------------- getLineCin -----------------------     \/\/ \u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044f \u0441\u0442\u0440\u043e\u043a. \u0422\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 Windows     inline void getLineCin(std::wstring &amp;in_str){         std::wcin >> in_str;     }     inline void getLineCin(std::string &amp;in_str){         std::getline(std::cin, in_str);     }     \/\/ ----------------------- getLineCin end -------------------      \/\/ ----------------------- printString -----------------------     \/\/ \u0423\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f     inline void printString(wchar_t str_to_print){         std::wcout &lt;&lt; str_to_print &lt;&lt;std::endl;     }     inline void printString(char str_to_print){         std::cout &lt;&lt; str_to_print &lt;&lt;std::endl;     }     inline void printString(wchar_t* str_to_print){         std::wcout &lt;&lt; str_to_print &lt;&lt;std::endl;     }     inline void printString(char* str_to_print){         std::cout &lt;&lt; str_to_print &lt;&lt;std::endl;     }     inline void printString(const wchar_t* str_to_print){         std::wcout &lt;&lt; str_to_print &lt;&lt;std::endl;     }     inline void printString(const char* str_to_print){         std::cout &lt;&lt; str_to_print &lt;&lt;std::endl;     }     inline void printString(std::wstring str_to_print){         std::wcout &lt;&lt; str_to_print &lt;&lt;std::endl;     }     inline void printString(std::string str_to_print){         std::cout &lt;&lt; str_to_print &lt;&lt;std::endl;     }     inline void printString(std::exception except){         #ifdef WIN32             std::wcout &lt;&lt; except.what() &lt;&lt;std::endl;         #else             std::cout &lt;&lt; except.what() &lt;&lt;std::endl;         #endif \/\/ WIN32     }     \/\/ ----------------------- printString end---------------------     \/\/ \u041f\u0430\u0443\u0437\u0430 \u0432 \u043a\u043e\u043d\u0446\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b     inline void pause(){         #ifdef WIN32             system(\"PAUSE\");         #else             std::cout&lt;&lt; \"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u0438\u043c\u0432\u043e\u043b \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 enter\" &lt;&lt;std::endl;             char d;             std::cin >> d;         #endif \/\/ WIN32     } } #endif \/\/ !GLOBAL_INCLUDE<\/code><\/pre>\n<p>    \u0412\u0432\u0435\u0434\u0443 \u0442\u043e\u0433\u043e \u0447\u0442\u043e \u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443 \u0438 \u0441\u0430\u043c \u0444\u0430\u0439\u043b \u043f\u0430\u0446\u0438\u0435\u043d\u0442 \u044f \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e \u0432 std::string, \u0430 \u043f\u0443\u0442\u0438 \u043a \u0444\u0430\u0439\u043b\u0430\u043c \u0432 Windows \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u043a\u0438\u0440\u0438\u043b\u043b\u0438\u0446\u0443 \u0438 \u0435\u0451 \u0432 \u0430\u0434\u0435\u043a\u0432\u0430\u0442\u043d\u043e\u043c \u0432\u0438\u0434\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u0437 cmd Windows \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 std::wstring, \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0434\u0435\u043b\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u0438.<\/p>\n<p>    \u0414\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 printString, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u043e\u0441\u043b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u0430 \u0432\u044b\u0432\u043e\u0434\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0432 UTF-16 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e std::wcout. \u041f\u0440\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0440\u0435\u0436\u0438\u043c\u0430 \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435.  \u0417\u0430 \u043f\u0435\u0440\u0432\u0443\u044e \u0438 \u0432\u0442\u043e\u0440\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0438, \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043d\u0435\u0441\u0451\u0442 \u043e\u0431\u044a\u0435\u043a\u0442  GetFileTarget. <\/p>\n<p>\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b GetFileTarget:<\/p>\n<pre><code class=\"cpp\">\/**  * @file GetFileTarget.hpp  * @author Tolsedum (tolsedum@gmail.com)  * @brief To go to the worcing dirictory  * @version 0.1  * @date 2022-06-12  *   * @copyright Copyright (c) 2022  *   *\/ #pragma once #ifndef GET_FILE_TARGET #define GET_FILE_TARGET \"GET_FILE_TARGET\"  #include \"GlobalIncluds.hpp\"  class GetFileTarget{ private:     \/** @brief \u0418\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0434\u043e \u043c\u0435\u043d\u044f\u0442\u044c*\/     std::string name_file_target;     \/** @brief \u0418\u043c\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432 \u043d\u0435\u0433\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438*\/     std::string tmp_file_name;     \/** @brief \u0421\u043f\u0438\u0441\u043e\u043a \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0443\u0442\u044c*\/     std::vector&lt;std::string> use_plagin;     \/** @brief \u0421\u043f\u0438\u0441\u043e\u043a \u0441\u0442\u0440\u043e\u043a \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u0430\u0432\u043a\u0438*\/     std::vector&lt;std::string> search_begin;     \/** @brief \u041d\u043e\u043c\u0435\u0440 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 use_plagin. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u0443 vector*\/     short selected_number;     \/** @brief \u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043e \u0432\u044b\u0431\u043e\u0440\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u0430*\/     const my_char *ask_user_a_plagin;     \/** @brief \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e \u0442\u043e\u043c \u0447\u0442\u043e \u043d\u0430\u0434\u043e \u0432\u0432\u0435\u0441\u0442\u0438 \u0447\u0438\u0441\u043b\u043e*\/     const my_char *invalid_argument;     \/** @brief \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0438 \u0432\u0432\u043e\u0434\u0438\u043c\u044b\u0445 \u0447\u0438\u0441\u0435\u043b*\/     const my_char *out_of_range;     \/** @brief \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e \u0442\u043e\u043c \u0447\u0442\u043e \u0444\u0430\u0439\u043b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0442\u043a\u0440\u044b\u0442*\/     const my_char *file_is_not_open;     \/** @brief \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e \u0442\u043e\u043c \u0447\u0442\u043e \u0444\u0430\u0439\u043b \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d*\/     const my_char *file_is_not_found;     \/** @brief \u041f\u0443\u0442\u044c \u043a \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443 \u0441 \u0444\u0430\u0439\u043b\u043e\u043c*\/     const char *profile_patch;     void getIntCin(); public:     GetFileTarget();     \/** \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u043d\u0435\u043c\u0443 \u0432 home \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e*\/     void jumpToDirectory();     \/** \u041d\u0430\u0439\u0442\u0438 \u043d\u0443\u0436\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0434\u043b\u044f \u043f\u0440\u0430\u0432\u043a\u0438 \u0438 \u043d\u0430\u0439\u0442\u0438 \u043c\u0435\u0441\u0442\u043e \u043f\u0440\u0430\u0432\u043a\u0438*\/     GenerelInformation getFilePosition();     \/\/ \u0414\u043b\u044f Windows \u0437\u0430\u0434\u0430\u0435\u0442 \u0440\u0435\u0436\u0438\u043c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u043b\u043e\u0433\u043e\u0442\u0438\u043f. \u0414\u043b\u044f Linux \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u043b\u043e\u0433\u043e\u0442\u0438\u043f.     void setMode();      }; #endif \/\/ !GET_FILE_TARGET<\/code><\/pre>\n<p>\u0412 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435 \u043a\u043b\u0430\u0441\u0441\u0430 GetFileTarget \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u041e\u0421 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0442\u0438\u043f\u043e\u043c.<\/p>\n<pre><code class=\"cpp\">GetFileTarget::GetFileTarget(){     this->tmp_file_name = \"tmp_file.tmp\";          this->use_plagin = {         \"natizyskunk.sftp\",         \"liximomo.sftp\",         \"doujinya.sftp-revived\"     };     this->search_begin = {         \"function d(e){return Object.assign({},h,e)}\", \/\/ for natizyskunk.sftp         \"function p(e){return Object.assign({},h,e)}\", \/\/ for liximomo.sftp         \"function d(e){return Object.assign({},h,e)}\"  \/\/ for doujinya.sftp-revived     };          #ifdef WIN32         this->file_is_not_found = L\"\u0424\u0430\u0439\u043b \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\";         this->file_is_not_open = L\"\u0424\u0430\u0439\u043b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0442\u043a\u0440\u044b\u0442\";         this->out_of_range = L\"\u0427\u0438\u0441\u043b\u043e \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 3 \u0438 \u043c\u0435\u043d\u044c\u0448\u0435 1\";         this->invalid_argument = L\"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0447\u0438\u0441\u043b\u043e: \";         this->ask_user_a_plagin = L\"\\ \u041a\u0430\u043a\u0438\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c \u0432\u044b \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435\u0441\u044c: \\n \\ 1) natizyskunk.sftp \\n \\ 2) liximomo.sftp \\n \\ 3) doujinya.sftp-revived \\n\\ \u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043d\u043e\u043c\u0435\u0440: \";         this->name_file_target = \"\\\\\\\\dist\\\\\\\\extension.js\";         this->profile_patch = \".vscode\\\\\\\\extensions\";     #else         this->file_is_not_found = \"\u0424\u0430\u0439\u043b \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\";         this->file_is_not_open = \"\u0424\u0430\u0439\u043b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0442\u043a\u0440\u044b\u0442\";         this->out_of_range = \"\u0427\u0438\u0441\u043b\u043e \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 3 \u0438 \u043c\u0435\u043d\u044c\u0448\u0435 1\";         this->invalid_argument = \"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0447\u0438\u0441\u043b\u043e: \";         this->ask_user_a_plagin = \"\\ \u041a\u0430\u043a\u0438\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c \u0432\u044b \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435\u0441\u044c: \\n \\ 1) natizyskunk.sftp \\n \\ 2) liximomo.sftp \\n \\ 3) doujinya.sftp-revived \\n \\ \u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043d\u043e\u043c\u0435\u0440: \";         this->name_file_target = \"\/dist\/extension.js\";         this->profile_patch = \".vscode\/extensions\";     #endif \/\/ WIN32 }<\/code><\/pre>\n<p> \u0417\u0430 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044f  jumpToDirectory.<\/p>\n<pre><code class=\"cpp\">void GetFileTarget::jumpToDirectory(){     #ifdef WIN32         \/\/ \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0438 \u0432 cmd \u043d\u0430 UTF-8         system(\"chcp 65001\");         std::string current_patch;         \/\/ \u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u043d\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u0444\u0430\u0439\u043b\u0430 \u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432 \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b tmp_file_name         std::string cmd = \"dir %UserProfile% >> \"+this->tmp_file_name;         \/\/ \u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 cmd Windous         system(cmd.c_str());         \/\/ \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u0437 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043f\u0443\u0442\u044c \u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c\u0443 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443         std::ifstream tmp_file_point(this->tmp_file_name);         if(tmp_file_point.is_open()){             std::string search_str = \" Directory of \";             for(std::string line; getline(tmp_file_point, line);){                 std::size_t pos = line.find(search_str);                 if(pos != std::string::npos){                     \/\/ \u0423\u0431\u0440\u0430\u0442\u044c \u0442\u043e \u0447\u0442\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0434 \u043d\u0443\u0436\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439                     current_patch = line.replace(0, search_str.size(), \"\");                     \/\/ \u041f\u0440\u0438\u0432\u043e\u0434\u0438\u043c \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0441\u0430\u043c \u043f\u0443\u0442\u044c \u043a \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438. \u0414\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u043e\u0442 \u0442\u0430\u043a (C:\\\\Users\\\\user_himself)                     current_patch = std::regex_replace(current_patch, std::regex(\"\\\\\\\\\"), \"\\\\\\\\\");                     break;                 }             }             tmp_file_point.close();             if(remove(this->tmp_file_name.c_str()) != 0){                 throw L\"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c, \u0443\u0434\u0430\u043b\u0438\u0442\u0435 \u0435\u0433\u043e \u0441\u0430\u043c\u0438.\";             }         }else{             throw L\"\u0412\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c\";         }         \/\/ \u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u0432 \u0434\u043e\u043c\u0430\u0448\u043d\u044e\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f         _wchdir(fn::stringToWstring(current_patch).c_str());     #else         \/\/ \u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u0432 \u0434\u043e\u043c\u0430\u0448\u043d\u044e\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f         chdir(getenv(\"HOME\"));     #endif \/\/ WIN32 }<\/code><\/pre>\n<p>    \u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u0434\u043e\u043c\u0430\u0448\u043d\u044e\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u043f\u043e\u0434 Linux \u043a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e. \u0427\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f Windows, \u044f \u043d\u0435 \u0437\u043d\u0430\u044e \u043a\u0430\u043a \u043a\u0440\u0430\u0441\u0438\u0432\u043e \u043c\u043e\u0436\u043d\u043e \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u0440\u0438 \u044d\u0442\u043e\u043c Visual C++, \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u0442\u0430\u043a \u0438 \u043d\u0435 \u043d\u0430\u0448\u0451\u043b. \u0410\u0431\u0441\u0442\u0440\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u0432\u0448\u0438\u0441\u044c \u043e\u0442 \u0437\u0430\u0434\u0430\u0447\u0438 \u0438 \u043f\u043e\u043f\u0438\u0432 \u0447\u0430\u044e \u00ab\u043c\u043e\u043b\u043e\u0447\u043d\u044b\u0439 \u0443\u043b\u0443\u043d\u00bb \u0432\u043f\u0440\u0438\u043a\u0443\u0441\u043a\u0443 \u0441 \u0431\u0443\u0431\u043b\u0438\u043a\u043e\u043c \u044f \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043b, \u0447\u0442\u043e \u0432 cmd Windows \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u0435\u043c\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u044b. \u041f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 %UserProfile% \u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b DIR \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0432\u044b\u0434\u0435\u0440\u043d\u0443\u0442\u044c \u043e\u0442 \u0442\u0443\u0434\u0430 \u043f\u0443\u0442\u044c \u043a \u043d\u0435\u043c\u0443.<\/p>\n<p>    \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0438 \u0432 cmd \u043d\u0430 UTF-8 (system(&#171;chcp 65001&#187;);) \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0435 \u043d\u0430 \u043a\u0438\u0440\u0438\u043b\u043b\u0438\u0446\u0435, \u0430 \u043d\u0430 \u043b\u0430\u0442\u0438\u043d\u0438\u0446\u0435. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043d\u0430 \u043a\u0438\u0440\u0438\u043b\u043b\u0438\u0446\u0435, \u0442\u043e \u0432\u044b\u0439\u0434\u0435\u0442 \u0442\u043e, \u0447\u0442\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043e \u043d\u0430 <a href=\"#page4\" rel=\"noopener noreferrer nofollow\">\u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435<\/a>. \u041e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0434\u0435\u043b\u043e \u0437\u0430 \u043c\u0430\u043b\u044b\u043c, \u0447\u0438\u0442\u0430\u0435\u043c \u0444\u0430\u0439\u043b, \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u043d\u0443\u0436\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 (\u043f\u043e \u043d\u0430\u043b\u0438\u0447\u0438\u044e \u0432 \u043d\u0435\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 search_str), \u0443\u0431\u0438\u0440\u0430\u0435\u043c \u0438\u0437 \u043d\u0435\u0451 \u0432\u0441\u0451 \u043b\u0438\u0448\u043d\u0435\u0435 \u0438 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u043c \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u0434\u0432\u0430 \u0441\u043b\u044d\u0448\u0430 (\\\\).<\/p>\n<p><a class=\"anchor\" name=\"page4\" id=\"page4\"><\/a><\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/805\/68b\/10a\/80568b10afa56ed651d30b275e1ac228.png\" width=\"449\" height=\"551\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/805\/68b\/10a\/80568b10afa56ed651d30b275e1ac228.png\"\/><figcaption><\/figcaption><\/figure>\n<p> \u0412\u0441\u0451 \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u00absetMode\u00bb \u044d\u0442\u043e \u0432\u044b\u0432\u043e\u0434 \u043c\u043e\u0435\u0433\u043e \u043b\u043e\u0433\u043e\u0442\u0438\u043f\u0430 \u0438 \u0434\u043b\u044f Windows \u043c\u0435\u043d\u044f\u0435\u0442 \u0440\u0435\u0436\u0438\u043c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432.<\/p>\n<pre><code class=\"cpp\">void GetFileTarget::setMode(){     #ifdef WIN32         \/\/  \u0417\u0430\u0434\u0430\u0435\u0442 \u0440\u0435\u0436\u0438\u043c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432         if(_setmode(_fileno(stdout), _O_U16TEXT) &lt; 0)throw L\"\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0440\u0435\u0436\u0438\u043c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430!\";         auto const &amp; sz_message         {             L\" __________________________________________ \\n\"             L\"|                                          |\\n\"             L\"|   \u256d\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2533\u256e\u2571\u2571\u256d\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2533\u256e\u2571\u256d\u2533\u2501\u256e\u256d\u2501\u256e    |\\n\"             L\"|   \u2503\u256d\u256e\u256d\u256e\u2503\u256d\u2501\u256e\u2503\u2503\u2571\u2571\u2503\u256d\u2501\u256e\u2503\u256d\u2501\u2501\u253b\u256e\u256d\u256e\u2503\u2503\u2571\u2503\u2503\u2503\u2570\u256f\u2503\u2503    |\\n\"             L\"|   \u2570\u256f\u2503\u2503\u2570\u252b\u2503\u2571\u2503\u2503\u2503\u2571\u2571\u2503\u2570\u2501\u2501\u252b\u2570\u2501\u2501\u256e\u2503\u2503\u2503\u2503\u2503\u2571\u2503\u2503\u256d\u256e\u256d\u256e\u2503    |\\n\"             L\"|   \u2571\u2571\u2503\u2503\u2571\u2503\u2503\u2571\u2503\u2503\u2503\u2571\u256d\u254b\u2501\u2501\u256e\u2503\u256d\u2501\u2501\u256f\u2503\u2503\u2503\u2503\u2503\u2571\u2503\u2503\u2503\u2503\u2503\u2503\u2503    |\\n\"             L\"|   \u2571\u2571\u2503\u2503\u2571\u2503\u2570\u2501\u256f\u2503\u2570\u2501\u256f\u2503\u2570\u2501\u256f\u2503\u2570\u2501\u2501\u2533\u256f\u2570\u256f\u2503\u2570\u2501\u256f\u2503\u2503\u2503\u2503\u2503\u2503    |\\n\"             L\"|   \u2571\u2571\u2570\u256f\u2571\u2570\u2501\u2501\u2501\u253b\u2501\u2501\u2501\u253b\u2501\u2501\u2501\u253b\u2501\u2501\u2501\u253b\u2501\u2501\u2501\u253b\u2501\u2501\u2501\u253b\u256f\u2570\u256f\u2570\u256f    |\\n\"             L\"|__________________________________________|\\n\"             L\"|                                          |\\n\"             L\"| Permission is hereby granted, free of    |\\n\"             L\"| charge, to any person obtaining a copy of|\\n\"             L\"| of this software and accompanying files, |\\n\"             L\"| to use them without restriction,         |\\n\"             L\"| including, without limitation, the       |\\n\"             L\"| rights to use, copy, modify, merge,      |\\n\"             L\"| publish, distribute, sublicense and\/or   |\\n\"             L\"| sell copies of the software. The authors |\\n\"             L\"| or copyright holders shall not be liable |\\n\"             L\"| for any claims, damages or other         |\\n\"             L\"| liability, whether in contract, tort or  |\\n\"             L\"| otherwise, arising out of or in          |\\n\"             L\"| connection with the software or your use |\\n\"             L\"| or other dealings with the software.     |\\n\"             L\"|__________________________________________|\\n\"             L\"|   website: ***************               |\\n\"             L\"|   email: tolsedum@gmail.com              |\\n\"             L\"|__________________________________________|\\n\"         };         std::wcout &lt;&lt; sz_message &lt;&lt; std::endl;     #else         auto const &amp;sz_message{             \" __________________________________________ \\n\"             \"|                                          |\\n\"             \"|   \u256d\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2533\u256e\u2571\u2571\u256d\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2533\u256e\u2571\u256d\u2533\u2501\u256e\u256d\u2501\u256e    |\\n\"             \"|   \u2503\u256d\u256e\u256d\u256e\u2503\u256d\u2501\u256e\u2503\u2503\u2571\u2571\u2503\u256d\u2501\u256e\u2503\u256d\u2501\u2501\u253b\u256e\u256d\u256e\u2503\u2503\u2571\u2503\u2503\u2503\u2570\u256f\u2503\u2503    |\\n\"             \"|   \u2570\u256f\u2503\u2503\u2570\u252b\u2503\u2571\u2503\u2503\u2503\u2571\u2571\u2503\u2570\u2501\u2501\u252b\u2570\u2501\u2501\u256e\u2503\u2503\u2503\u2503\u2503\u2571\u2503\u2503\u256d\u256e\u256d\u256e\u2503    |\\n\"             \"|   \u2571\u2571\u2503\u2503\u2571\u2503\u2503\u2571\u2503\u2503\u2503\u2571\u256d\u254b\u2501\u2501\u256e\u2503\u256d\u2501\u2501\u256f\u2503\u2503\u2503\u2503\u2503\u2571\u2503\u2503\u2503\u2503\u2503\u2503\u2503    |\\n\"             \"|   \u2571\u2571\u2503\u2503\u2571\u2503\u2570\u2501\u256f\u2503\u2570\u2501\u256f\u2503\u2570\u2501\u256f\u2503\u2570\u2501\u2501\u2533\u256f\u2570\u256f\u2503\u2570\u2501\u256f\u2503\u2503\u2503\u2503\u2503\u2503    |\\n\"             \"|   \u2571\u2571\u2570\u256f\u2571\u2570\u2501\u2501\u2501\u253b\u2501\u2501\u2501\u253b\u2501\u2501\u2501\u253b\u2501\u2501\u2501\u253b\u2501\u2501\u2501\u253b\u2501\u2501\u2501\u253b\u256f\u2570\u256f\u2570\u256f    |\\n\"             \"|__________________________________________|\\n\"             \"|                                          |\\n\"             \"| Permission is hereby granted, free of    |\\n\"             \"| charge, to any person obtaining a copy of|\\n\"             \"| of this software and accompanying files, |\\n\"             \"| to use them without restriction,         |\\n\"             \"| including, without limitation, the       |\\n\"             \"| rights to use, copy, modify, merge,      |\\n\"             \"| publish, distribute, sublicense and\/or   |\\n\"             \"| sell copies of the software. The authors |\\n\"             \"| or copyright holders shall not be liable |\\n\"             \"| for any claims, damages or other         |\\n\"             \"| liability, whether in contract, tort or  |\\n\"             \"| otherwise, arising out of or in          |\\n\"             \"| connection with the software or your use |\\n\"             \"| or other dealings with the software.     |\\n\"             \"|__________________________________________|\\n\"             \"|   website: ***************               |\\n\"             \"|   email: tolsedum@gmail.com              |\\n\"             \"|__________________________________________|\\n\"         };         std::cout &lt;&lt; sz_message &lt;&lt; std::endl;     #endif \/\/ WIN32 }<\/code><\/pre>\n<p>    \u0421 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u043d\u0430\u0439\u0442\u0438 \u043d\u0443\u0436\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0434\u043b\u044f \u043f\u0440\u0430\u0432\u043a\u0438 \u0438 \u043d\u0430\u0439\u0442\u0438 \u0432 \u043d\u0451\u043c \u043c\u0435\u0441\u0442\u043e \u043f\u0440\u0430\u0432\u043a\u0438, \u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u00abgetFilePosition\u00bb \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0441 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438.<\/p>\n<pre><code class=\"cpp\">GenerelInformation GetFileTarget::getFilePosition(){     \/\/ \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u043e\u043c\u0435\u0440 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u043c\u0443 \u043f\u043b\u0430\u0433\u0438\u043d\u0443     this->getIntCin();     std::ifstream file_point;     GenerelInformation info;     info.tmp_file_name = tmp_file_name;      bool file_finde = false;     \/\/ \u041f\u043e\u0438\u0441\u043a \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430     for (auto const&amp; p : fs::directory_iterator(this->profile_patch)){         std::size_t pos = p.path().string().find(this->use_plagin[this->selected_number]);         if(pos != std::string::npos){             this->name_file_target = p.path().string() + this->name_file_target;             file_point.open(this->name_file_target);             info.file_path = this->name_file_target;             file_finde = true;             break;          }     }     if(!file_finde){         throw this->file_is_not_found;     }else if (!file_point.is_open()){         throw this->file_is_not_open;     }      int pos_len = 0;     \/\/ \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435 \u0434\u043b\u044f \u0435\u0433\u043e \u043f\u0440\u0430\u0432\u043a\u0438     for (std::string line; getline(file_point, line);){         std::size_t pos = line.find(this->search_begin[this->selected_number]);         if(pos != std::string::npos){             pos_len += pos + this->search_begin[this->selected_number].size();             info.pos_begin = pos_len;             std::string name_searching_str = \"function\";             std::size_t pos_end = line.find(name_searching_str, pos + this->search_begin[this->selected_number].size()+name_searching_str.size());             if(pos_end != std::string::npos){                 info.pos_end = pos_len + (pos_end-(pos + this->search_begin[this->selected_number].size()));                 break;             }         }else{             \/\/ \u0422\u0430\u043a \u043a\u0430\u043a \u0432 Linux \u043d\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442\u0441\u044f \\n \u0430 \u0432 Windows \\r\\n \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 Win \u043d\u0430\u0434\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0430 1 \u0441\u0438\u043c\u0432\u043e\u043b             pos_len += line.size();             #ifdef WIN32                 pos_len +=1;             #endif \/\/ WIN32         }     }     file_point.close();     info.selected_number = this->selected_number;     return info; }<\/code><\/pre>\n<p>    \u0422\u0430\u043a \u043a\u0430\u043a \u0432 Linux \u043d\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442\u0441\u044f \\n \u0430 \u0432 Windows \\r\\n \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 Windows \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u0440\u043e\u0434\u0432\u0438\u0433\u0430\u0442\u044c \u043a\u0430\u0440\u0435\u0442\u043a\u0443 \u0435\u0449\u0451 \u043d\u0430 \u043e\u0434\u0438\u043d \u0441\u0438\u043c\u0432\u043e\u043b (pos_len += 1).<\/p>\n<p>    \u041d\u0443 \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043d\u043e\u043c\u0435\u0440\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u043c\u0443 \u043f\u043b\u0430\u0433\u0438\u043d\u0443 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u00abgetIntCin\u00bb<\/p>\n<pre><code class=\"cpp\">void GetFileTarget::getIntCin(){     fn::printString(this->ask_user_a_plagin);     my_stryng tmp_str;     bool iter = true;     while (iter){         try{             fn::getLineCin(tmp_str);             this->selected_number = std::stoi(tmp_str);             if(this->selected_number == 1){                 this->selected_number = 0;                 iter = false;             }else if(this->selected_number == 2){                 this->selected_number = 1;                 iter = false;             }else if(this->selected_number == 3){                 this->selected_number = 2;                 iter = false;             }else{                 fn::printString(this->out_of_range);             }         }catch(const std::invalid_argument &amp;e){             fn::printString(this->invalid_argument);         }catch(const std::out_of_range &amp;e){              fn::printString(this->out_of_range);         }     } }<\/code><\/pre>\n<p> \u0414\u0432\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044e \u0444\u0430\u0439\u043b\u0430 \u0432\u0437\u044f\u043b \u043d\u0430 \u0441\u0435\u0431\u044f \u043a\u043b\u0430\u0441\u0441 \u00abFileRewrite\u00bb. \u0415\u043c\u0443 \u0434\u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c:<\/p>\n<ol>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u0443\u0442\u044c \u043a \u043d\u043e\u0432\u043e\u043c\u0443 \u043c\u0435\u0441\u0442\u0443 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a, \u0438 \u0443\u0437\u043d\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439 \u043f\u043b\u0430\u0433\u0438\u043d \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f;<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<\/li>\n<\/ol>\n<pre><code class=\"cpp\">\/**  * @file FileRewrite.hpp  * @author Tolsedum (tolsedum@gmail.com)  * @brief For to change file  * @version 0.1  * @date 2022-06-12  *   * @copyright Copyright (c) 2022  *   *\/ #pragma once #ifndef FILE_REWRITE #define FILE_REWRITE \"FILE_REWRITE\"   #include \"GlobalIncluds.hpp\"   class FileRewrite{ private:     \/** @brief \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0444\u0430\u0439\u043b\u0435*\/     GenerelInformation info;     \/** @brief \u0421\u0442\u0440\u043e\u043a\u0430 \u0441 \u0433\u043e\u0442\u043e\u0432\u044b\u043c js \u043a\u043e\u0434\u043e\u043c*\/     std::string str_to_insert;     \/** @brief \u0412\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0437\u0430\u0433\u043e\u0442\u043e\u0432\u043e\u043a \u0441 js \u043a\u043e\u0434\u043e\u043c \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432*\/     std::vector&lt;std::string> function_variant;     \/** @brief \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u043e\u043c \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438*\/     const my_char *remove_file_failed;     \/** @brief \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e \u0443\u0434\u0430\u0447\u043d\u043e\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0444\u0430\u0439\u043b\u0430*\/     const my_char *file_patched;     \/** @brief \u041f\u0440\u043e\u0449\u0430\u043d\u0438\u0435 \u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c*\/     const my_char *say_goodby;     \/** @brief \u0421\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u0443\u0442\u044c \u0433\u0434\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0444\u0430\u0439\u043b*\/     const my_char *ask_user_a_path; public:     FileRewrite(GenerelInformation &amp;_fileData);     \/** \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u0443\u0442\u044c \u043a \u043d\u043e\u0432\u043e\u043c\u0443 \u043c\u0435\u0441\u0442\u0443 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a*\/     void getSettingsPatch();     \/** \u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430*\/     void rewrite();          };  #endif \/\/ !FILE_REWRITE<\/code><\/pre>\n<p>    \u042f \u0440\u0435\u0448\u0438\u043b \u0432\u044b\u043d\u0435\u0441\u0442\u0438 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043e \u043e\u0448\u0438\u0431\u043a\u0430\u0445, \u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u0445 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0438\u0445 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435 \u043a\u043b\u0430\u0441\u0441\u0430 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0442\u0430\u043a\u0436\u0435 \u043a\u0430\u043a \u0438 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0435.<\/p>\n<p>\u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u043a\u043b\u0430\u0441\u0441\u0430 FileRewrite \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"cpp\">FileRewrite::FileRewrite(GenerelInformation &amp;_info){     this->info = _info;     #ifdef WIN32         this->remove_file_failed = L\"\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c, \u0443\u0434\u0430\u043b\u0438\u0442\u0435 \u0435\u0433\u043e \u0441\u0430\u043c\u0438.\";         this->file_patched = L\"\u0424\u0430\u0439\u043b \u0438\u0437\u043c\u0435\u043d\u0451\u043d.\";         this->say_goodby = L\"\u0424\u0430\u0439\u043b \u0438\u0437\u043c\u0435\u043d\u0451\u043d. \u041d\u0430\u0441\u043b\u0430\u0436\u0434\u0430\u0439\u0442\u0435\u0441\u044c!\";         this->ask_user_a_path = L\"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043f\u0443\u0442\u044c \u043a \u043c\u0435\u0441\u0442\u0443 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a: \";              #else         this->remove_file_failed = \"\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c, \u0443\u0434\u0430\u043b\u0438\u0442\u0435 \u0435\u0433\u043e \u0441\u0430\u043c\u0438.\";         this->file_patched = \"\u0424\u0430\u0439\u043b \u0438\u0437\u043c\u0435\u043d\u0451\u043d.\";         this->say_goodby = \"\u0424\u0430\u0439\u043b \u0438\u0437\u043c\u0435\u043d\u0451\u043d. \u041d\u0430\u0441\u043b\u0430\u0436\u0434\u0430\u0439\u0442\u0435\u0441\u044c!\";         this->ask_user_a_path = \"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043f\u0443\u0442\u044c \u043a \u043c\u0435\u0441\u0442\u0443 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a: \";              #endif \/\/ WIN32     this->function_variant = {         \"function p(e){e='%s';return o.join(e,a.CONFIG_PATH)}\",\/\/ for natizyskunk.sftp         \"function d(e){e='%s';return o.join(e,a.CONFIG_PATH)}\", \/\/ for liximomo.sftp         \"function p(e){e='%s';return o.join(e,a.CONFIG_PATH)}\" \/\/ for doujinya.sftp-revived     }; }<\/code><\/pre>\n<p>   \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f function_variant \u0445\u0440\u0430\u043d\u0438\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u0434\u043b\u044f \u0437\u0430\u043c\u0435\u043d\u044b \u0432 \u0444\u0430\u0439\u043b\u0435. \u041c\u0435\u0441\u0442\u043e \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0435 \u0432\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u043f\u0443\u0442\u0438 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u043e \u00ab%s\u00bb. \u041f\u0435\u0440\u0432\u044b\u0439 \u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u044b, \u043d\u043e \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0442 \u0440\u0430\u0437\u043d\u044b\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u043c. \u0412 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043d\u0430\u0434\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430.<\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u0443\u0442\u0438 \u043a \u043d\u043e\u0432\u043e\u043c\u0443 \u043c\u0435\u0441\u0442\u0443 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u00abgetSettingsPatch\u00bb:<\/p>\n<pre><code class=\"cpp\">void FileRewrite::getSettingsPatch(){     my_stryng tmp_path_settings_file;      fn::printString(this->ask_user_a_path);     \/\/ \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u0443\u0442\u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a     fn::getLineCin(tmp_path_settings_file);     fn::printString(' ');     std::string path_settings;     #ifdef WIN32         path_settings = fn::wstringToString(tmp_path_settings_file);         path_settings = std::regex_replace(path_settings, std::regex(\"\\\\\\\\\"), \"\\\\\\\\\");     #else         path_settings = tmp_path_settings_file;     #endif \/\/ WIN32          this->str_to_insert = function_variant[this->info.selected_number];     \/\/ \u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u043f\u0443\u0442\u0438 \u0432 \u0448\u0430\u0431\u043b\u043e\u043d     this->str_to_insert = std::regex_replace(this->str_to_insert, std::regex(\"%s\"), path_settings); }<\/code><\/pre>\n<p>    \u0418 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u0435\u043b\u0430\u0435\u0442 \u0442\u043e \u0440\u0430\u0434\u0438 \u0447\u0435\u0433\u043e \u0432\u0441\u0451 \u0437\u0430\u0442\u0435\u0432\u0430\u043b\u043e\u0441\u044c \u00abrewrite\u00bb:<\/p>\n<pre><code class=\"cpp\">void FileRewrite::rewrite(){     if(this->info.pos_begin > 0){         std::ifstream file_target(this->info.file_path, std::ios::in | std::ios::binary);         std::ofstream tmp_file(this->info.tmp_file_name, std::ios::out | std::ios::binary | std::ios::trunc);         bool is_opened = tmp_file.is_open() &amp;&amp; file_target.is_open();                  if(is_opened){             \/\/ \u041f\u043c\u0448\u0435\u043c \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0434\u0430\u043d\u043d\u044b\u0439 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u0441 \u043a\u043e\u0434\u043e\u043c \u0434\u043e \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0432\u0441\u0442\u0430\u0432\u043a\u0438             char *big_buffer = new char[this->info.pos_begin];             file_target.read(big_buffer, this->info.pos_begin);             tmp_file.write(big_buffer, this->info.pos_begin);             delete[] big_buffer;             \/\/ \u0412\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043d\u043e\u0432\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c             tmp_file.write(this->str_to_insert.c_str(), this->str_to_insert.size());                          file_target.seekg(0, file_target.end);             int size_buffer = file_target.tellg();             \/\/ \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c             size_buffer -= this->info.pos_begin+(this->info.pos_end-this->info.pos_begin);             \/\/ \u041f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u0442\u0430\u0440\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c             file_target.seekg(this->info.pos_end);             \/\/ \u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432\u0441\u0451 \u0447\u0442\u043e \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c             char *buffer = new char[size_buffer];             file_target.read(buffer, size_buffer);             tmp_file.write(buffer, size_buffer);             delete[] buffer;         }         file_target.close();         tmp_file.close();         if(is_opened){             std::ifstream tmp_file_if(this->info.tmp_file_name, std::ios::in | std::ios::binary);             std::ofstream file_target_in(this->info.file_path.c_str(), std::ios::out | std::ios::binary | std::ios::trunc);             \/\/ \u041f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0438\u0437 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0432 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439             file_target_in &lt;&lt; tmp_file_if.rdbuf();             tmp_file_if.close();             file_target_in.close();             \/\/ \u0423\u0434\u0430\u043b\u044f\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b             if (remove(this->info.tmp_file_name.c_str()) != 0) {                 throw this->remove_file_failed;             }else{                 fn::printString(this->file_patched);             }         }         fn::printString(this->say_goodby);     }<\/code><\/pre>\n<p>    \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u044e \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0434\u0432\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u0432 \u0432 \u0438\u0445 \u00ab\u043d\u0443\u0442\u0440\u043e\u00bb. \u0427\u0442\u043e \u0441\u043a\u0430\u0436\u0435\u0442 \u00abGhidra\u00bb \u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0445. \u041c\u043e\u0451 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u043b\u0430 \u0441\u0442\u0440\u043e\u0447\u043a\u0430 \u0441 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043c\u0438 \u0444\u0430\u0439\u043b\u043e\u0432. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0434\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 Linux \u0432\u0435\u0441\u0438\u0442 \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u044c\u0448\u0435 \u0447\u0435\u043c \u0434\u043b\u044f Windows.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e59\/eda\/67d\/e59eda67d03ab4b3ceb6bb2c2b00cd64.png\" width=\"1940\" height=\"332\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e59\/eda\/67d\/e59eda67d03ab4b3ceb6bb2c2b00cd64.png\"\/><figcaption><\/figcaption><\/figure>\n<p>    \u041d\u043e \u044d\u0442\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0442\u043e\u0447\u043d\u043e, \u0435\u0441\u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043e\u0431\u044a\u0451\u043c \u0444\u0430\u0439\u043b\u043e\u0432, \u0442\u043e \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u0431\u0443\u0434\u0435\u0442 \u0435\u0449\u0451 \u0431\u043e\u043b\u0435\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/5ed\/f00\/c96\/5edf00c96b98a7400d9fc2c80da7646d.png\" width=\"819\" height=\"571\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5ed\/f00\/c96\/5edf00c96b98a7400d9fc2c80da7646d.png\"\/><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/760\/5ec\/32e\/7605ec32ed647d9897643cf232ecea08.png\" width=\"823\" height=\"568\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/760\/5ec\/32e\/7605ec32ed647d9897643cf232ecea08.png\"\/><figcaption><\/figcaption><\/figure>\n<p> \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043e\u0431\u0430 \u0444\u0430\u0439\u043b\u0430 \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u043c.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/261\/697\/5f2\/2616975f2c5fa3089a06a63996120387.png\" width=\"1920\" height=\"1080\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/261\/697\/5f2\/2616975f2c5fa3089a06a63996120387.png\"\/><figcaption><\/figcaption><\/figure>\n<p>    \u0424\u0443\u043d\u043a\u0446\u0438\u044f main \u0432 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 Windows  \u043c\u0430\u043b\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0430. \u0412 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0435 \u00ab__main()\u00bb \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0435\u0449\u0451 \u043e\u0434\u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u00ab__do_global_ctors()\u00bb \u043e\u043d\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u044b \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u0410 \u0432 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u0441 Linux \u0442\u0430\u043a\u043e\u0433\u043e \u043d\u0435\u0442, \u043d\u043e \u0435\u0441\u0442\u044c \u043a\u043e\u0435 \u0447\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0435.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8d1\/fd7\/a7c\/8d1fd7a7c229f719430eff411fd8b5bb.png\" width=\"1920\" height=\"1040\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8d1\/fd7\/a7c\/8d1fd7a7c229f719430eff411fd8b5bb.png\"\/><figcaption><\/figcaption><\/figure>\n<p>    \u041e\u0431\u044a\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0434\u0432\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u00ablong lVar1, in_FS_OFFSET;\u00bb. \u0423\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u0442\u043e \u0447\u0442\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432 \u00ablVarl\u00bb \u043b\u043e\u0436\u0435\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u00ablVar1 = *(long *)(in_FS_OFFSET + 0x28);\u00bb, \u0430 \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u0445\u043e\u0434\u043e\u043c \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u044c \u00abif (lVar1 != *(long *)(in_FS_OFFSET + 0x28))\u00bb \u0438 \u0435\u0441\u043b\u0438 \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u043b\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u00ab__stack_chk_fail()\u00bb (\u0441\u0431\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u0442\u0435\u043a\u0430), \u043c\u043e\u0436\u043d\u043e \u0441\u043c\u0435\u043b\u043e \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0441\u0442\u0435\u043a\u0430 \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u0445\u043e\u0434\u043e\u043c \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0422\u0430\u043a\u0430\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0447\u0430\u0441\u0442\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u043c\u0435\u0442\u043e\u0434\u0430\u0445, \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445, \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430\u0445, \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f Linux. \u041f\u043e \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u00abGhidra\u00bb \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f, \u0447\u0442\u043e \u043c\u0435\u0442\u043e\u0434 \u00ab__stack_chk_fail\u00bb \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u044d\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0430\u043d\u0430\u043b\u0438\u0437 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0439\u0442\u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0441\u0442\u0435\u043a\u0430 \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043c\u0435\u0440 \u043f\u043e \u0435\u0433\u043e \u0437\u0430\u0449\u0438\u0442\u0435 \u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u043e, \u0442\u043e \u043f\u043e\u0447\u0435\u043c\u0443 \u0442\u043e\u0433\u0434\u0430 \u0442\u0430\u043a\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0434\u043b\u044f Windows?<\/p>\n<p>    \u0421\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u00abjumpToDirectory\u00bb \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0434\u043b\u044f Linux, \u043a\u043e\u0440\u043e\u0442\u043a\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c, \u0447\u0442\u043e \u043d\u0435 \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0441\u043f\u043e\u0441\u043e\u0431 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0432 \u0434\u043e\u043c\u0430\u0448\u043d\u044e\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0442\u0430\u043c \u043f\u0440\u043e\u0449\u0435.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/db3\/cd8\/6f4\/db3cd86f48bc8e0d5536151e49c22d79.png\" width=\"1920\" height=\"1040\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/db3\/cd8\/6f4\/db3cd86f48bc8e0d5536151e49c22d79.png\"\/><figcaption><\/figcaption><\/figure>\n<p>    \u0410 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0434\u043b\u044f Windows \u0435\u0441\u0442\u044c \u0447\u0442\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438 \u043d\u0430\u0434 \u0447\u0435\u043c \u043f\u043e\u0440\u0430\u0441\u0441\u0443\u0436\u0434\u0430\u0442\u044c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0430\u0446\u0438\u044f \u0441\u0442\u0440\u043e\u043a. \u041e\u0433\u043e\u0432\u043e\u0440\u044e\u0441\u044c, \u043a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0430\u0446\u0438\u044f \u0441\u0442\u0440\u043e\u043a \u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0442\u0430\u043c \u043d\u0435 \u0442\u0430\u043c, \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e \u0436\u0443\u0447\u043a\u043e\u0432 \u043f\u043e\u0434 \u043d\u043e\u0433\u0430\u043c\u0438.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f73\/25d\/758\/f7325d758fa121c69cbfb8ac2da86f88.png\" width=\"1920\" height=\"1080\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f73\/25d\/758\/f7325d758fa121c69cbfb8ac2da86f88.png\"\/><figcaption><\/figcaption><\/figure>\n<p> \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0441\u043a\u043b\u0435\u0439\u043a\u0438 \u0441\u0442\u0440\u043e\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cpp\">std::string cmd = \"dir %UserProfile% >> \"+this\u2192tmp_file_name;<\/code><\/pre>\n<p> \u0412 \u00abGhidra\u00bb \u0442\u0430\u043a: <\/p>\n<pre><code class=\"cpp\">std::operator+&lt;char,_std::char_traits&lt;char>,_std::allocator&lt;char>_>(&amp;cmd,\"dir %UserProfile% >> \",&amp;this\u2192tmp_file_name);<\/code><\/pre>\n<p> \u0410 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u00absystem(cmd.c_str());\u00bb  \u0441 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 (const char*)  \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cpp\">pcVar4 = std::__cxx11::basic_string&lt;char, _std::char_traits&lt;char>, _std::allocator&lt;char>_>::c_str(&amp;cmd); system(pcVar4);<\/code><\/pre>\n<p> \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0437\u043d\u0430\u0447\u0438\u0442\u044c \u0442\u043e, \u0447\u0442\u043e \u043c\u0435\u0436\u0434\u0443 \u0442\u0430\u043a\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u044c\u044e:<\/p>\n<pre><code class=\"cpp\">std::string str_main = \"Some text\"; const char* c_test_str = str_main.c_str(); system(str);<\/code><\/pre>\n<p>\u0418 \u0442\u0430\u043a\u043e\u0439:<\/p>\n<pre><code class=\"cpp\">std::string str_main = \"Some text\"; system(str_main.c_str());<\/code><\/pre>\n<p>\u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u00abc_test_str\u00bb \u0435\u0441\u0442\u044c \u043d\u043e \u043d\u0430\u043c \u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430, \u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0435\u0451 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u0442\u0430\u043c, \u0433\u0434\u0435 \u0438\u0434\u0451\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u00abc_str()\u00bb.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0e0\/2e0\/d11\/0e02e0d113c92c1ffae990b75a83d063.png\" width=\"1920\" height=\"1080\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0e0\/2e0\/d11\/0e02e0d113c92c1ffae990b75a83d063.png\"\/><figcaption><\/figcaption><\/figure>\n<p>    \u0420\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044f \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044f \u043a\u043e\u0434, \u044f \u043d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f \u043d\u0430 \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u043b\u0438\u0441\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0434\u043b\u044f Windows \u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u043d\u0430 \u043f\u043e\u0434\u043e\u0431\u0438\u0435 \u0442\u0430\u043a\u0438\u0445: \u00abFUN_0046cd10\u00bb, \u00abFUN_0046cd40\u00bb. \u041a\u043e\u0433\u0434\u0430 \u00ab\u0437\u0430\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u0435\u0448\u044c \u0432\u043d\u0443\u0442\u0440\u044c\u00bb \u043e\u043d\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a: \u00abvoid FUN_0046cd10(void){return;}\u00bb. \u041d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 NULL. \u0412\u0437\u0433\u043b\u044f\u043d\u0443\u0432 \u043d\u0430 \u0442\u0435 \u0436\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430 \u00abFileRewrite\u00bb, \u043d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0434\u043b\u044f Linux \u0434\u0435\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u044b \u043a\u043b\u0430\u0441\u0441\u0430 \u00abstd::allocator&lt;char>\u00bb, \u0430 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0434\u043b\u044f Windows \u0442\u0440\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0430 \u0442\u043e\u043c-\u0436\u0435 \u043c\u0435\u0441\u0442\u0435 \u0441 \u0432\u044b\u0437\u043e\u0432\u043e\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u00abFUN_0046cd40()\u00bb<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2e2\/a12\/b37\/2e2a12b3784d7c5bacdb4d1b418900d4.png\" width=\"1920\" height=\"1080\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2e2\/a12\/b37\/2e2a12b3784d7c5bacdb4d1b418900d4.png\"\/><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/613\/8c8\/ffb\/6138c8ffbf4fd04fddc95325363456d4.png\" width=\"1920\" height=\"1040\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/613\/8c8\/ffb\/6138c8ffbf4fd04fddc95325363456d4.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u042d\u0442\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u00abGhidra\u00bb \u043d\u0435 \u0441\u043c\u043e\u0433\u043b\u0430 \u043e\u043f\u043e\u0437\u043d\u0430\u0442\u044c \u0441\u043c\u044b\u0441\u043b \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0439 \u043d\u0438\u0436\u0435:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"center\">Linux<\/p>\n<\/td>\n<td>\n<p align=\"center\">Windows<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">LEA        RAX=>local_99,[RBP + -0x91]<\/p>\n<\/td>\n<td>\n<p align=\"left\">LEA        RAX=>local_19,[RBP + -0x1]<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">MOV       this,RAX<\/p>\n<\/td>\n<td>\n<p align=\"left\">MOV       this,RAX<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">CALL      std::allocator&lt;char>::~allocator<\/p>\n<\/td>\n<td>\n<p align=\"left\">CALL      FUN_0046cd40<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>    \u042f \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0434\u0443\u043c\u0430\u043b, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u00abGhidra\u00bb \u0438\u0437 Windows, \u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u0441\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e. \u0420\u0430\u0434\u0438 \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0430 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0437\u0430\u0439\u0442\u0438 \u0432 \u0434\u0430\u0432\u043d\u043e \u0437\u0430\u0431\u0440\u043e\u0448\u0435\u043d\u043d\u0443\u044e \u043c\u043d\u043e\u0439, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u0440\u044f\u0434\u043e\u043c \u0441 Linux \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 Windows. \u0422\u0440\u0438\u0434\u0446\u0430\u0442\u044c \u043c\u0438\u043d\u0443\u0442 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0438 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e \u0447\u0435\u043c \u043e\u0431\u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0436\u0435\u0441\u0442\u043a\u043e\u0433\u043e \u0434\u0438\u0441\u043a\u0430, \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430, \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u043c\u0435\u043d\u044f \u043f\u043e\u043d\u0435\u0440\u0432\u043d\u0438\u0447\u0430\u0442\u044c. \u041d\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u0431\u044b\u043b\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u0438 \u044f \u0443\u0431\u0435\u0434\u0438\u043b\u0441\u044f \u0432 \u0442\u043e\u043c \u0447\u0442\u043e \u043e\u0448\u0438\u0431\u0430\u043b\u0441\u044f. \u041d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u043a\u0440\u043e\u0435\u0442\u0441\u044f \u0432 \u0441\u0430\u043c\u043e\u0439 \u00abGhidra\u00bb. \u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u043d\u0435\u0441\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u0435\u0440\u0434\u0438\u043a\u0442\u0430 \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u0441\u0432\u043e\u044e \u0440\u0430\u0437\u0432\u0435\u0434\u043a\u0443 \u043a\u0440\u043e\u0441\u0441-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0438 \u043f\u043e\u0434\u0432\u0435\u0441\u0442\u0438 \u0438\u0442\u043e\u0433\u0438.  <\/p>\n<p>    \u0412\u043e \u043f\u0435\u0440\u0432\u044b\u0445, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0437\u0430 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0438 \u0442\u0440\u0430\u0442\u0438\u0442\u044c \u0441\u0432\u043e\u0451 \u0434\u0440\u0430\u0433\u043e\u0446\u0435\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e:<\/p>\n<ul>\n<li>\n<p> \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0438\u0445 \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u043b\u0438 \u0437\u0430\u0434\u0430\u0447\u0430 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445;<\/p>\n<\/li>\n<li>\n<p> \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430, \u043f\u043e\u0439\u0434\u0443\u0442 \u043b\u0438 \u043e\u043d\u0438 \u043d\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430;<\/p>\n<\/li>\n<li>\n<p> \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043e\u043d\u043e \u043a\u043e\u043c\u0443 \u043d\u0438\u0431\u0443\u0434\u044c \u043d\u0430\u0434\u043e?<\/p>\n<\/li>\n<\/ul>\n<p> \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043f\u0443\u043d\u043a\u0442 \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u0435\u043d \u0434\u043b\u044f \u0442\u0435\u0445 \u043a\u0442\u043e \u0443\u0447\u0438\u0442\u0441\u044f \u0438 \u0445\u043e\u0447\u0435\u0442 \u0443\u0437\u043d\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043d\u043e\u0432\u043e\u0435.<\/p>\n<p>     \u0412\u043e \u0432\u0442\u043e\u0440\u044b\u0445, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043b\u0435\u0437\u0442\u044c \u0432 \u0447\u0443\u0436\u043e\u0439 \u043a\u043e\u0434, \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430.<\/p>\n<p>     \u0412 \u0442\u0440\u0435\u0442\u044c\u0438\u0445, \u043a \u0432\u044b\u0431\u043e\u0440\u0443 \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442\u044c \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432:<\/p>\n<ul>\n<li>\n<p> \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0436\u0435\u043b\u0435\u0437\u0430 \u043f\u0440\u043e\u0442\u0438\u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043b\u043e\u0433\u0438\u043a\u0438 \u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0438\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u0438 \u043a\u043e\u0434\u0430;<\/p>\n<\/li>\n<li>\n<p> \u0441\u0440\u043e\u043a\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438;<\/p>\n<\/li>\n<\/ul>\n<p>    \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443: \u044f \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0443\u0432\u0435\u0440\u0435\u043d, \u0447\u0442\u043e \u0441 \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u043f\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u043d\u0430 Java \u0431\u044b\u0441\u0442\u0440\u0435\u0439, \u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u043e\u0434\u0430 \u0431\u044b\u043b \u0431\u044b \u043d\u0430 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043a\u043e\u0440\u043e\u0447\u0435. \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0430 \u043d\u0430 C++ \u0432\u044b\u0448\u0435 (\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0441\u0442\u043e\u0438\u0442 \u044d\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c) \u043d\u043e \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438 \u0436\u0435\u043b\u0435\u0437\u0430 \u0438 \u043d\u0435 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u0438 \u043a \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, Java \u0432\u044b\u0438\u0433\u0440\u0430\u043b \u0431\u044b \u043d\u0435 \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u043f\u0443\u043d\u043a\u0442\u0443.<\/p>\n<p>    P.S. \u0425\u043e\u0434\u0438\u0442 \u043c\u043d\u043e\u0433\u043e \u0441\u043b\u0443\u0445\u043e\u0432 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e Rust \u043b\u0443\u0447\u0448\u0435 \u043f\u043e \u043c\u043d\u043e\u0433\u0438\u043c \u043f\u0443\u043d\u043a\u0442\u0430\u043c \u0447\u0435\u043c C++. \u0427\u0442\u043e \u0434\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043e\u0441\u0442\u0443\u0447\u0430\u0442\u044c \u043b\u0438\u0446\u043e\u043c \u043f\u043e \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0435 \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0447\u0442\u043e \u043d\u0438\u0431\u0443\u0434\u044c \u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c. \u041f\u043e \u0441\u0435\u043c\u0443, \u0435\u0441\u0442\u044c \u0443 \u043c\u0435\u043d\u044f \u043c\u044b\u0441\u043b\u0438 \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u0440\u0430\u0437\u0432\u0435\u0434\u043a\u043e\u0439 \u044d\u0442\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430, \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0434\u043b\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u043a\u0440\u0443\u0433\u043e\u0437\u043e\u0440\u0430, \u0430 \u043c\u043e\u0436\u0435\u0442, \u0434\u043e\u0439\u0434\u0451\u0442 \u0434\u043e \u0442\u043e\u0433\u043e \u0447\u0442\u043e \u0438 \u043f\u0440\u043e\u0435\u043a\u0442 \u043a\u0430\u043a\u043e\u0439 \u043d\u0430 \u043d\u0451\u043c \u043d\u0430\u0441\u0442\u0443\u0447\u0443. \u0411\u0443\u0434\u0435\u043c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c!<\/p>\n<p>\u042d\u0442\u043e\u0442 \u043f\u0430\u0442\u0447 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u043d\u0430 <a href=\"https:\/\/github.com\/Tolsedum\/sftp_patch_vscode\" rel=\"noopener noreferrer nofollow\">GitHub<\/a> <\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"v-portal\" style=\"display:none;\"><\/div>\n<\/div>\n<p> <!----> <!----><br \/> \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\/post\/673474\/\"> https:\/\/habr.com\/ru\/post\/673474\/<\/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-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>    \u042d\u0442\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043d\u0430\u0447\u0430\u043b\u0430\u0441\u044c \u043a\u043e\u0433\u0434\u0430 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 VSCode \u0438\u0437 \u0437\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043d\u0430 \u0431\u043e\u0440\u0442\u0443 \u0441\u0442\u0430\u043b \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0443\u0434\u043e\u0431\u0435\u043d. \u0410 \u0438\u043c\u0435\u043d\u043d\u043e, \u00abnatizyskunk.sftp\u00bb \u043f\u043b\u0430\u0433\u0438\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0441\u044f \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 (S)FTP \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443, \u0438 \u0432\u043d\u043e\u0441\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440, \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0432 \u0444\u0430\u0439\u043b. \u0412\u0441\u0451 \u043d\u0435\u0447\u0435\u0433\u043e, \u0435\u0441\u043b\u0438 \u0431\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c \u043d\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0441\u044c \u0432 \u043a\u043e\u0440\u043d\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0432\u0437\u044f\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u041a\u043e\u0433\u0434\u0430 \u0443 \u0442\u0435\u0431\u044f \u0441 \u0434\u0435\u0441\u044f\u0442\u043e\u043a \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u0435\u0449\u0451 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0442\u0435\u0440\u043f\u0435\u0442\u044c, \u043d\u043e \u0431\u043e\u043b\u0435\u0435 70 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0438 \u043e\u043d\u0438 \u0432\u0441\u0435 \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445, \u0442\u043e \u043f\u0435\u0440\u0435\u043d\u043e\u0441 \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0430\u0440\u043e\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f, \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0440\u0430\u0437\u0434\u0440\u0430\u0436\u0451\u043d\u043d\u043e \u0438\u0441\u043a\u0430\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0443\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u0438 \u0441 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0435\u0439 \u043a\u043b\u0430\u0432\u0438\u0448 Ctrl+C, Ctrl+V, \u043c\u0435\u043d\u044f\u0442\u044c \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0435. \u0412 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043a\u043e\u043b\u043b\u0435\u0433\u0438 \u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u044b\u043c\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u043c\u0438 \u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u00abliximomo.sftp\u00bb, \u00abdoujinya.sftp-revived\u00bb. \u0418\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u044c \u0438\u0445 \u043d\u0430 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f, \u0447\u0442\u043e \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0430\u0440\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0435\u0433\u043e \u043a\u043e\u0434\u0430. \u041f\u0440\u043e\u0447\u0438\u0442\u0430\u0432 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u043e\u043d\u043d\u043e\u0435 \u0441\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u0432\u0441\u0435\u0445 \u0442\u0440\u0451\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u0445 \u0438 \u0432\u044b\u044f\u0441\u043d\u0438\u0432 \u0447\u0442\u043e \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u043d\u043e\u0441\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u043a\u043e\u0434 \u0431\u0435\u0437 \u0441\u043f\u0440\u043e\u0441\u0430. \u041f\u0440\u043e\u0431\u0440\u0430\u0432\u0448\u0438\u0441\u044c \u0432 \u0444\u0430\u0439\u043b \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0438 \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u0438 \u0432 VSCode \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043d\u0430 JS, \u0443\u0432\u0438\u0434\u0435\u043b \u043e\u0431\u0444\u0443\u0441\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 JS \u043a\u043e\u0434, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0442\u0440\u043e\u043a. \u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0438 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043e\u0431\u044a\u0451\u043c \u043a\u043e\u0434\u0430 \u0431\u0435\u0437 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443. <\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>    \u0417\u043d\u0430\u044f, \u0447\u0442\u043e \u043f\u043b\u0430\u0433\u0438\u043d \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0444\u0430\u0439\u043b \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u0432 \u043a\u043e\u0440\u043d\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c .vscode, \u044f \u0440\u0435\u0448\u0438\u043b \u043d\u0430\u0447\u0430\u0442\u044c \u0441 \u043f\u043e\u0438\u0441\u043a\u0430 \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430 \u0432 \u043a\u043e\u0434\u0435.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>    \u0412\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0430\u0446\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u00abr\u00bb \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c (\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u00abt.CONFIG_PATH\u00bb) \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u00abt.CONGIF_FILENAME\u00bb . \u0421\u0442\u0440\u0430\u043d\u043d\u043e \u0447\u0442\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u00abjoin()\u00bb \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0443 js \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442. \u0415\u0441\u043b\u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u00abr\u00bb \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c. \u0421\u043a\u043e\u0440\u0435\u0439 \u0432\u0441\u0435\u0433\u043e \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u00abjoin()\u00bb \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0435, \u043d\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u044e \u0447\u0442\u043e \u0446\u0435\u043b\u044c \u044d\u0442\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c \u0447\u0442\u043e\u0431\u044b \u0441\u0431\u0438\u0442\u044c \u0441 \u0442\u043e\u043b\u043a\u0443 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f \u043a\u043e\u0434\u0430. \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0435 \u0441\u0442\u0440\u0430\u0448\u043d\u043e \u0438 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0435 \u00ab<em>string<\/em>.concat(<em>string1<\/em>, <em>string2<\/em>, \u2026, <em>stringX<\/em>)\u00bb.<\/p>\n<p>    \u0422\u0435\u043f\u0435\u0440\u044c \u044f \u0443\u0432\u0435\u0440\u0435\u043d, \u0447\u0442\u043e \u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u00abCONFIG_PATH\u00bb. \u0412 \u043f\u043e\u0438\u0441\u043a\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u0434\u0432\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u043f\u0435\u0440\u0432\u044b\u0439 \u0443\u0436\u0435 \u043c\u044b \u0432\u0438\u0434\u0435\u043b\u0438, \u0430 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0442\u0430\u043a\u0430\u044f-\u0436\u0435 \u043a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0430\u0446\u0438\u044f \u043a\u0430\u043a \u0432 \u043f\u0440\u043e\u0448\u043b\u044b\u0439 \u0440\u0430\u0437.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>    \u0413\u0434\u0435 \u043f\u043e\u0442\u043e\u043c \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u0441\u043a\u0430\u0442\u044c \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0447\u0435\u0442\u0441\u044f, \u0434\u0430 \u0438 \u043d\u0435 \u0434\u0443\u043c\u0430\u044e \u0447\u0442\u043e \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f. \u0420\u0430\u0434\u0438 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430 \u0437\u0430\u043c\u0435\u043d\u0438\u043b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043d\u0430 \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u0434\u043e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0433\u0434\u0435 \u0431\u0443\u0434\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c. \u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 VSCode \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u043a\u043b\u0430\u0432\u0438\u0448 \u00abCtrl+Shift+p\u00bb \u043e\u0442\u043a\u0440\u043e\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u00ab>SFTP: Config\u00bb \u043f\u043b\u0430\u0433\u0438\u043d \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0444\u0430\u0439\u043b \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u043f\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u043f\u0443\u0442\u0438. \u0424\u0430\u0439\u043b \u0441\u0442\u0430\u043b \u043e\u0431\u0449\u0438\u043c \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u043b\u043e\u0441\u044c! \u042d\u0442\u043e \u043f\u043e\u0431\u0435\u0434\u0430! \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0434\u043e \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u0441\u044f \u044d\u0442\u0438\u043c \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0435\u043c \u0441 \u043a\u043e\u043b\u043b\u0435\u0433\u0430\u043c\u0438 \u0438 \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c \u0438\u0445 \u043e\u0442 \u043c\u0443\u0447\u0435\u043d\u0438\u0439.  <\/p>\n<p>    \u041d\u043e \u044f \u043d\u0435 \u044f \u0435\u0441\u043b\u0438 \u043d\u0435 \u0438\u0437\u0431\u0430\u0432\u043b\u044e \u0438\u0445 \u043e\u0442 \u0441\u0442\u043e\u043b\u044c \u0441\u043b\u0435\u0433\u043a\u0430 \u043d\u0435 \u0443\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443.  \u041f\u043e\u0434\u0443\u043c\u0430\u0432 \u043d\u0430\u0434 \u0432\u044b\u0431\u043e\u0440\u043e\u043c \u044f\u0437\u044b\u043a\u0430, \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0442\u0435\u0440\u044f\u0442\u044c \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u043d\u044b\u0439 \u043e\u043f\u044b\u0442, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438  \u0441 \u043d\u0438\u043c \u0443\u0436\u0435 \u043d\u0435\u0442, \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f \u043d\u0430 C++. \u041d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u043f\u0443\u0442\u044c, \u043f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0438 \u0447\u0442\u043e, \u043d\u0430 \u0443\u0436\u0435 \u0440\u043e\u0434\u043d\u044b\u0445 \u0434\u043b\u044f \u043c\u0435\u043d\u044f PHP \u0438\u043b\u0438 Python \u0437\u0430\u0434\u0430\u0447\u0443 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u043f\u0440\u043e\u0449\u0435 \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u0435\u0439, \u0435\u0441\u043b\u0438 C# \u0442\u043e \u0438 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0437\u0430\u043f\u0438\u043b\u0438\u0442\u044c \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c (\u043f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0438 \u0435\u0441\u043b\u0438 \u041e\u041f \u0431\u0443\u0434\u0435\u0442 Windows). \u0422\u0430\u043a \u043a\u0430\u043a \u0432 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u043d\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 Windows, \u0430 \u0434\u043e\u043c\u0430 \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u043f\u043e\u0434 Linux, \u0437\u0430\u0434\u0430\u0447\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0435\u0449\u0451 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0439. \u0422\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u043e\u043f\u044b\u0442\u0430 \u0441 \u043a\u0440\u043e\u0441-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0435\u0439 \u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e. \u0420\u0430\u0437\u0432\u0435\u0434\u043a\u0443 \u043d\u0430 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u043c\u043d\u0435 \u044f\u0437\u044b\u043a\u0430\u0445, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a Rust, Go, Ruby \u044f \u043e\u0441\u0442\u0430\u0432\u043b\u044e \u043d\u0430 \u043f\u043e\u0442\u043e\u043c.<\/p>\n<p>    \u0421 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0445\u043e\u0447\u0443 \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0434\u0438\u0442\u044c: &#8212; \u044f \u043d\u0435 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043d\u0430 C++, \u0438 \u0438\u0437\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u043d\u0438\u0436\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u043a\u0430\u043a \u0443\u0447\u0435\u0431\u043d\u043e\u0435 \u043f\u043e\u0441\u043e\u0431\u0438\u0435. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0443\u0447\u0438\u0448\u044c\u0441\u044f \u0447\u0435\u043c\u0443-\u0442\u043e \u043d\u043e\u0432\u043e\u043c\u0443, \u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435, \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0437\u0430\u043a\u0440\u0435\u043f\u0438\u0442\u044c \u0437\u043d\u0430\u043d\u0438\u044f.<\/p>\n<p> \u0414\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u043e\u0434 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 Windows \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 GNU C++ \u0434\u043b\u044f MinGW-w64. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0432 Ubuntu \/ Linux Mint \/ Debian \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"bash\">sudo apt update sudo apt install g++-mingw-w64<\/code><\/pre>\n<p>Makefile \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cmake\">#\u0414\u043b\u044f Windowd 32bit # CXX := i686-w64-mingw32-g++ #\u0414\u043b\u044f Windowd 64bit # CXX := x86_64-w64-mingw32-g++ # \u0414\u043b\u044f Linux CXX := g++  CXX_FLAGS := -Wall -Wextra -std=c++17 -ggdb  BIN := bin SRC := src INCLUDE := include LIB := lib   ifeq ($(CXX),x86_64-w64-mingw32-g++) DEFINE := WIN32=WIN32 EXECUTABLE := sftp_pat.exe else ifeq ($(CXX),i686-w64-mingw32-g++) DEFINE := WIN32=WIN32 EXECUTABLE := sftp_pat.exe else ifeq ($(CXX),g++) DEFINE := LINUX=LINUX EXECUTABLE := sftp_patch endif  LIBRARIES := -static-libstdc++ -static-libgcc -lstdc++fs   all: $(BIN)\/$(EXECUTABLE)  run: clean all clear .\/$(BIN)\/$(EXECUTABLE)  $(BIN)\/$(EXECUTABLE): $(SRC)\/*.cpp $(CXX) $(CXX_FLAGS) -I $(INCLUDE) -L $(LIB) $^ -o $@ $(LIBRARIES) -D $(DEFINE)  clean: -rm $(BIN)\/*<\/code><\/pre>\n<p>    \u0414\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0441\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0439  CXX \u0438 \u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435.<\/p>\n<p> <\/p>\n<p>    \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u0442\u043e\u0447\u043a\u0435 \u0432\u0445\u043e\u0434\u0430 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c main.cpp. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0442\u043e\u0438\u0442 \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0443 \u043d\u0430 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b. <\/p>\n<ol>\n<li>\n<p>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u043d\u0435\u043c\u0443 \u0432 home \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0439\u0442\u0438 \u043d\u0443\u0436\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0434\u043b\u044f \u043f\u0440\u0430\u0432\u043a\u0438 \u0438 \u043d\u0430\u0439\u0442\u0438 \u043c\u0435\u0441\u0442\u043e \u043f\u0440\u0430\u0432\u043a\u0438<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u0443\u0442\u044c \u043a \u043d\u043e\u0432\u043e\u043c\u0443 \u043c\u0435\u0441\u0442\u0443 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0438 \u0443\u0437\u043d\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439 \u043f\u043b\u0430\u0433\u0438\u043d \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f<\/p>\n<\/li>\n<li>\n<p>\u0412\u043d\u0435\u0441\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0444\u0430\u0439\u043b\u0435<\/p>\n<\/li>\n<\/ol>\n<p>\u0412\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e. \u042f \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u043b \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u043e\u0440\u043e\u0432\u043d\u0443 \u043d\u0430 \u0434\u0432\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 GetFileTarget \u0438 FileRewrite.   \u0424\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f main.cpp \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cpp\">\/**  * @file main.cpp  * @author Tolsedum (tolsedum@gmail.com)  * @brief Entry point  * @version 1.0  * @date 2022-06-12  *   * @copyright Copyright (c) 2022  *   *\/  #include \"GetFileTarget.hpp\" #include \"FileRewrite.hpp\"  int main() {     try{         GetFileTarget getFileTarget;         \/\/ \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u043d\u0435\u043c\u0443 \u0432 home \u0434\u0438\u0440\u0438\u043a\u0442\u043e\u0440\u0438\u044e         getFileTarget.jumpToDirectory();         \/\/ \u0414\u043b\u044f Windows \u0437\u0430\u0434\u0430\u0435\u0442 \u0440\u0435\u0436\u0438\u043c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u043b\u043e\u0433\u043e\u0442\u0438\u043f. \u0414\u043b\u044f Linux \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u043b\u043e\u0433\u043e\u0442\u0438\u043f.         getFileTarget.setMode();                  \/\/ \u041d\u0430\u0439\u0442\u0438 \u043d\u0443\u0436\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0434\u043b\u044f \u043f\u0440\u0430\u0432\u043a\u0438 \u0438 \u043d\u0430\u0439\u0442\u0438 \u043c\u0435\u0441\u0442\u043e \u043f\u0440\u0430\u0432\u043a\u0438         GenerelInformation fileDate = getFileTarget.getFilePosition();         FileRewrite fileRewrite(fileDate);          \/\/ \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u0443\u0442\u044c \u043a \u043d\u043e\u0432\u043e\u043c\u0443 \u043c\u0435\u0441\u0442\u0443 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0438 \u0443\u0437\u043d\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439 \u043f\u043b\u0430\u0433\u0438\u043d \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f         fileRewrite.getSettingsPatch();          \/\/ \u0412\u043d\u0435\u0441\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0444\u0430\u0439\u043b\u0435         fileRewrite.rewrite();            }catch(const my_char* error){         fn::printString(error);     }catch (my_stryng error) {         fn::printString(error);     }catch(const fs::filesystem_error&amp; e){         fn::printString(e.what());     }catch(std::exception &amp; e) {         fn::printString(e.what());     }     fn::pause(); return 0; }<\/code><\/pre>\n<p>    \u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432\u043e \u0432\u0441\u0435\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u0445 \u043c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u043e\u0431\u0449\u0438\u0439 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043e\u0431\u044a\u0435\u043a\u0442. \u0415\u0433\u043e \u044f \u043d\u0430\u0437\u0432\u0430\u043b \u00abGlobalIncluds\u00bb.<\/p>\n<pre><code class=\"cpp\">\/**  * @file GlobalIncluds.hpp  * @author Tolsedum (tolsedum@gmail.com)  * @brief Global include headers, var, structs and functins  * @version 0.1  * @date 2022-06-12  *   * @copyright Copyright (c) 2022  *   *\/ #pragma once #ifndef GLOBAL_INCLUDE #define GLOBAL_INCLUDE \"GLOBAL_INCLUDE\"   #include &lt;regex> #include &lt;iostream> #include &lt;string> #include &lt;string.h> #include &lt;fstream> #include &lt;experimental\/filesystem> #include &lt;vector>  #ifdef WIN32     #include &lt;direct.h>     #include &lt;fcntl.h>     typedef wchar_t my_char;     typedef std::wstring my_stryng; #else     #include \"unistd.h\"     typedef std::string my_stryng;     typedef char my_char; #endif   namespace fs = std::experimental::filesystem;  \/\/ \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442 \u043e\u0434\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0434\u0440\u0443\u0433\u043e\u043c\u0443 struct GenerelInformation{     public:         std::string tmp_file_name;         std::string file_path;         std::size_t pos_begin = 0;         std::size_t pos_end = 0;         short selected_number;         GenerelInformation(){};         ~GenerelInformation(){}; };  namespace fn{     #ifdef WIN32         inline std::string wstringToString(std::wstring w_str_to_convert){             std::wstring_convert&lt;std::codecvt_utf8&lt;wchar_t>, wchar_t> w_conv;             std::string ret_value = w_conv.to_bytes(w_str_to_convert);             return ret_value;         }         inline std::wstring stringToWstring(std::string str_to_convert){             std::wstring_convert&lt;std::codecvt_utf8_utf16&lt;wchar_t>, wchar_t> w_conv;             std::wstring ret_value = w_conv.from_bytes(str_to_convert);             return ret_value;         }     #endif \/\/ WIN32      \/\/ ----------------------- getLineCin -----------------------     \/\/ \u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044f \u0441\u0442\u0440\u043e\u043a. \u0422\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 Windows     inline void getLineCin(std::wstring &amp;in_str){         std::wcin >> in_str;     }     inline void getLineCin(std::string &amp;in_str){         std::getline(std::cin, in_str);     }     \/\/ ----------------------- getLineCin end -------------------      \/\/ ----------------------- printString -----------------------     \/\/ \u0423\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f     inline void printString(wchar_t str_to_print){         std::wcout &lt;&lt; str_to_print &lt;&lt;std::endl;     }     inline void printString(char str_to_print){         std::cout &lt;&lt; str_to_print &lt;&lt;std::endl;     }     inline void printString(wchar_t* str_to_print){         std::wcout &lt;&lt; str_to_print &lt;&lt;std::endl;     }     inline void printString(char* str_to_print){         std::cout &lt;&lt; str_to_print &lt;&lt;std::endl;     }     inline void printString(const wchar_t* str_to_print){         std::wcout &lt;&lt; str_to_print &lt;&lt;std::endl;     }     inline void printString(const char* str_to_print){         std::cout &lt;&lt; str_to_print &lt;&lt;std::endl;     }     inline void printString(std::wstring str_to_print){         std::wcout &lt;&lt; str_to_print &lt;&lt;std::endl;     }     inline void printString(std::string str_to_print){         std::cout &lt;&lt; str_to_print &lt;&lt;std::endl;     }     inline void printString(std::exception except){         #ifdef WIN32             std::wcout &lt;&lt; except.what() &lt;&lt;std::endl;  <\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\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-335013","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/335013","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=335013"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/335013\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=335013"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=335013"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=335013"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}