{"id":12485,"date":"2022-09-30T22:19:02","date_gmt":"2022-09-30T16:49:02","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-how-to-save-text-file-to-struct-with-string-in-c\/"},"modified":"2022-09-30T22:19:02","modified_gmt":"2022-09-30T16:49:02","slug":"solved-how-to-save-text-file-to-struct-with-string-in-c","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-how-to-save-text-file-to-struct-with-string-in-c\/","title":{"rendered":"[Solved] How to save text file to struct with string in C++"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-55944090\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"55944090\" data-parentid=\"55942970\" data-score=\"1\" data-position-on-page=\"1\" data-highest-scored=\"1\" data-question-has-accepted-highest-score=\"1\" itemprop=\"acceptedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p>Serialization\/Deserialization of strings is tricky.<\/p>\n<p>As binary data the convention is to output the length of the string first, then the string data.<\/p>\n<p><a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/isocpp.org\/wiki\/faq\/serialization#serialize-binary-format\">https:\/\/isocpp.org\/wiki\/faq\/serialization#serialize-binary-format<\/a><\/p>\n<blockquote>\n<ul>\n<li>String data is tricky because you have to unambiguously know when the string\u2019s body stops. You can\u2019t unambiguously terminate all strings with a &#8216;\\0&#8217; if some string might contain that character; recall that std::string can store &#8216;\\0&#8217;. The easiest solution is to write the integer length just before the string data. Make sure the integer length is written in \u201cnetwork format\u201d to avoid sizeof and endian problems (see the solutions in earlier bullets).<\/li>\n<\/ul>\n<\/blockquote>\n<p>That way when reading the data back in you know the length of the string to expect and can preallocate the size of the string then just read that much data from the stream.<\/p>\n<p>If your data is a non-binary (text) format it&#8217;s a little trickier:<\/p>\n<p><a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/isocpp.org\/wiki\/faq\/serialization#serialize-text-format\">https:\/\/isocpp.org\/wiki\/faq\/serialization#serialize-text-format<\/a><\/p>\n<blockquote>\n<ul>\n<li>String data is tricky because you have to unambiguously know when the string\u2019s body stops. You can\u2019t unambiguously terminate all strings with a &#8216;\\n&#8217; or &#8216;&#8221;&#8216; or even &#8216;\\0&#8217; if some string might contain those characters. You might want to use C++ source-code escape-sequences, e.g., writing &#8216;\\&#8217; followed by &#8216;n&#8217; when you see a newline, etc. After this transformation, you can either make strings go until end-of-line (meaning they are deliminated by &#8216;\\n&#8217;) or you can delimit them with &#8216;&#8221;&#8216;.<\/li>\n<li>If you use C++-like escape-sequences for your string data, be sure to always use the same number of hex digits after &#8216;\\x&#8217; and &#8216;\\u&#8217;. I typically use 2 and 4 digits respectively. Reason: if you write a smaller number of hex digits, e.g., if you simply use stream &lt;&lt; &#8220;\\x&#8221; &lt;&lt; hex &lt;&lt; unsigned(theChar), you\u2019ll get errors when the next character in the string happens to be a hex digit. E.g., if the string contains &#8216;\\xF&#8217; followed by &#8216;A&#8217;, you should write &#8220;\\x0FA&#8221;, not &#8220;\\xFA&#8221;.<\/li>\n<li>If you don\u2019t use some sort of escape sequence for characters like &#8216;\\n&#8217;, be careful that the operating system doesn\u2019t mess up your string data. In particular, if you open a std::fstream without std::ios::binary, some operating systems translate end-of-line characters.<br \/>\n  Another approach for string data is to prefix the string\u2019s data with an integer length, e.g., to write &#8220;now is the time&#8221; as 15:now is the time. Note that this can make it hard for people to read\/write the file, since the value just after that might not have a visible separator, but you still might find it useful.<\/li>\n<\/ul>\n<\/blockquote>\n<p>Text-based serialization\/deserialization convention varies but one field per line is an accepted practice.<\/p>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\">1<\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved How to save text file to struct with string in C++ <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] Serialization\/Deserialization of strings is tricky. As binary data the convention is to output the length of the string first, then the string data. https:\/\/isocpp.org\/wiki\/faq\/serialization#serialize-binary-format String data is tricky because you have to unambiguously know when the string\u2019s body stops. You can\u2019t unambiguously terminate all strings with a &#8216;\\0&#8217; if some string might contain that &#8230; <a title=\"[Solved] How to save text file to struct with string in C++\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-how-to-save-text-file-to-struct-with-string-in-c\/\" aria-label=\"More on [Solved] How to save text file to struct with string in C++\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[324],"class_list":["post-12485","post","type-post","status-publish","format-standard","hentry","category-solved","tag-c"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>[Solved] How to save text file to struct with string in C++ - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-how-to-save-text-file-to-struct-with-string-in-c\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] How to save text file to struct with string in C++ - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] Serialization\/Deserialization of strings is tricky. As binary data the convention is to output the length of the string first, then the string data. https:\/\/isocpp.org\/wiki\/faq\/serialization#serialize-binary-format String data is tricky because you have to unambiguously know when the string\u2019s body stops. You can\u2019t unambiguously terminate all strings with a &#8216;&#8217; if some string might contain that ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-how-to-save-text-file-to-struct-with-string-in-c\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-09-30T16:49:02+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-how-to-save-text-file-to-struct-with-string-in-c\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-how-to-save-text-file-to-struct-with-string-in-c\\\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#\\\/schema\\\/person\\\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] How to save text file to struct with string in C++\",\"datePublished\":\"2022-09-30T16:49:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-how-to-save-text-file-to-struct-with-string-in-c\\\/\"},\"wordCount\":477,\"publisher\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#organization\"},\"keywords\":[\"c++\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-how-to-save-text-file-to-struct-with-string-in-c\\\/\",\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-how-to-save-text-file-to-struct-with-string-in-c\\\/\",\"name\":\"[Solved] How to save text file to struct with string in C++ - JassWeb\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#website\"},\"datePublished\":\"2022-09-30T16:49:02+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-how-to-save-text-file-to-struct-with-string-in-c\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-how-to-save-text-file-to-struct-with-string-in-c\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-how-to-save-text-file-to-struct-with-string-in-c\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] How to save text file to struct with string in C++\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#website\",\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/jassweb.com\\\/wp-content\\\/uploads\\\/2021\\\/02\\\/jass-website-logo-1.png\",\"contentUrl\":\"https:\\\/\\\/jassweb.com\\\/wp-content\\\/uploads\\\/2021\\\/02\\\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#\\\/schema\\\/person\\\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/wp-content\\\/litespeed\\\/avatar\\\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777008400\",\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/wp-content\\\/litespeed\\\/avatar\\\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777008400\",\"contentUrl\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/wp-content\\\/litespeed\\\/avatar\\\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777008400\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\\\/\\\/jassweb.com\"],\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/author\\\/jaspritsinghghumangmail-com\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] How to save text file to struct with string in C++ - JassWeb","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jassweb.com\/solved\/solved-how-to-save-text-file-to-struct-with-string-in-c\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] How to save text file to struct with string in C++ - JassWeb","og_description":"[ad_1] Serialization\/Deserialization of strings is tricky. As binary data the convention is to output the length of the string first, then the string data. https:\/\/isocpp.org\/wiki\/faq\/serialization#serialize-binary-format String data is tricky because you have to unambiguously know when the string\u2019s body stops. You can\u2019t unambiguously terminate all strings with a &#8216;&#8217; if some string might contain that ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-how-to-save-text-file-to-struct-with-string-in-c\/","og_site_name":"JassWeb","article_published_time":"2022-09-30T16:49:02+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-how-to-save-text-file-to-struct-with-string-in-c\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-how-to-save-text-file-to-struct-with-string-in-c\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] How to save text file to struct with string in C++","datePublished":"2022-09-30T16:49:02+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-how-to-save-text-file-to-struct-with-string-in-c\/"},"wordCount":477,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["c++"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-how-to-save-text-file-to-struct-with-string-in-c\/","url":"https:\/\/jassweb.com\/solved\/solved-how-to-save-text-file-to-struct-with-string-in-c\/","name":"[Solved] How to save text file to struct with string in C++ - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-09-30T16:49:02+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-how-to-save-text-file-to-struct-with-string-in-c\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-how-to-save-text-file-to-struct-with-string-in-c\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-how-to-save-text-file-to-struct-with-string-in-c\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] How to save text file to struct with string in C++"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777008400","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777008400","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777008400","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/12485","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=12485"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/12485\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=12485"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=12485"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=12485"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}