<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Arrays to files?</title>
		<link>http://www.allegro.cc/forums/view/588899</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Mon, 11 Dec 2006 13:07:23 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I have an array, how would I save it to a file? All I need is the ability to save it from the program and load it later.</p><p>I am using C++, so I would prefer a C++ function to do this.:P
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Durnus)</author>
		<pubDate>Mon, 04 Dec 2006 23:10:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>edit: the header file is #include &lt;fstream.h&gt;<br />this uses link list instead of arrays but its the same idea. <br />just change nd-&gt;ClientObject.Set_username( namer);<br />array[index]= namer.<br />you mite be adlbe to do this too.<br />inData &gt;&gt; array[index];
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="c">///and load from file</span></td></tr><tr><td class="number">2</td><td><span class="k1">void</span> ClientDatabase::load<span class="k2">(</span> <span class="k2">)</span></td></tr><tr><td class="number">3</td><td><span class="k2">{</span></td></tr><tr><td class="number">4</td><td>  ifstream inData<span class="k2">;</span></td></tr><tr><td class="number">5</td><td>  inData.open<span class="k2">(</span><span class="s">"Clients.txt"</span> <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">6</td><td>  </td></tr><tr><td class="number">7</td><td>  <span class="k1">char</span> trash <span class="k2">;</span></td></tr><tr><td class="number">8</td><td>  <span class="k1">int</span> num <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">9</td><td>  <span class="k1">int</span> num2 <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td>  string namer <span class="k2">;</span>     </td></tr><tr><td class="number">11</td><td>  inData <span class="k3">&gt;</span><span class="k3">&gt;</span> num<span class="k2">;</span></td></tr><tr><td class="number">12</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> trash<span class="k2">;</span>  </td></tr><tr><td class="number">13</td><td>&#160;</td></tr><tr><td class="number">14</td><td>  <span class="k1">while</span><span class="k2">(</span>   numItems2 <span class="k3">&lt;</span> num<span class="k2">)</span></td></tr><tr><td class="number">15</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">16</td><td>&#160;</td></tr><tr><td class="number">17</td><td>  ClientConfig<span class="k3">*</span> nd<span class="k2">;</span></td></tr><tr><td class="number">18</td><td>  nd <span class="k3">=</span> <span class="k1">new</span> ClientConfig<span class="k2">;</span></td></tr><tr><td class="number">19</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> namer<span class="k2">;</span></td></tr><tr><td class="number">20</td><td>    nd-&gt;ClientObject.Set_username<span class="k2">(</span> namer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>&#160;</td></tr><tr><td class="number">22</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> namer<span class="k2">;</span></td></tr><tr><td class="number">23</td><td>    nd-&gt;ClientObject.Set_password<span class="k2">(</span>namer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>&#160;</td></tr><tr><td class="number">25</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> namer<span class="k2">;</span></td></tr><tr><td class="number">26</td><td>    nd-&gt;ClientObject.CharacterObject.Set_name<span class="k2">(</span>namer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">27</td><td>    <span class="c">//inData &gt;&gt; trash;</span></td></tr><tr><td class="number">28</td><td>&#160;</td></tr><tr><td class="number">29</td><td>&#160;</td></tr><tr><td class="number">30</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> num2<span class="k2">;</span></td></tr><tr><td class="number">31</td><td>    <span class="k1">if</span> <span class="k2">(</span>num2 <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span></td></tr><tr><td class="number">32</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">33</td><td>      nd-&gt;ClientObject.CharacterObject.Set_race<span class="k2">(</span><span class="s">"namakan"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">34</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">35</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> trash<span class="k2">;</span></td></tr><tr><td class="number">36</td><td>&#160;</td></tr><tr><td class="number">37</td><td>&#160;</td></tr><tr><td class="number">38</td><td>&#160;</td></tr><tr><td class="number">39</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> num2<span class="k2">;</span></td></tr><tr><td class="number">40</td><td>    <span class="k1">if</span> <span class="k2">(</span>num2<span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span></td></tr><tr><td class="number">41</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">42</td><td>      nd-&gt;ClientObject.CharacterObject.Set_sex<span class="k2">(</span>male<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">43</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">44</td><td>    <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>num2<span class="k3">=</span><span class="k3">=</span> <span class="n">2</span><span class="k2">)</span></td></tr><tr><td class="number">45</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">46</td><td>      nd-&gt;ClientObject.CharacterObject.Set_sex<span class="k2">(</span>female<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">47</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">48</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> trash<span class="k2">;</span></td></tr><tr><td class="number">49</td><td>&#160;</td></tr><tr><td class="number">50</td><td>&#160;</td></tr><tr><td class="number">51</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> num2<span class="k2">;</span></td></tr><tr><td class="number">52</td><td>    nd-&gt;ClientObject.CharacterObject.Set_X<span class="k2">(</span>num2<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">53</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> trash<span class="k2">;</span></td></tr><tr><td class="number">54</td><td>    <span class="c">//textprintf_centre(screen, font, 40, 200, makecol(255, 255, 255),"FPS:%d", num2);</span></td></tr><tr><td class="number">55</td><td>&#160;</td></tr><tr><td class="number">56</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> num2<span class="k2">;</span></td></tr><tr><td class="number">57</td><td>    nd-&gt;ClientObject.CharacterObject.Set_Y<span class="k2">(</span>num2<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">58</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> trash<span class="k2">;</span></td></tr><tr><td class="number">59</td><td>&#160;</td></tr><tr><td class="number">60</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> num2<span class="k2">;</span></td></tr><tr><td class="number">61</td><td>    nd-&gt;ClientObject.CharacterObject.Set_W<span class="k2">(</span>num2<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">62</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> trash<span class="k2">;</span></td></tr><tr><td class="number">63</td><td>&#160;</td></tr><tr><td class="number">64</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> num2<span class="k2">;</span></td></tr><tr><td class="number">65</td><td>    nd-&gt;ClientObject.CharacterObject.Set_H<span class="k2">(</span>num2<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">66</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> trash<span class="k2">;</span></td></tr><tr><td class="number">67</td><td>&#160;</td></tr><tr><td class="number">68</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> num2<span class="k2">;</span></td></tr><tr><td class="number">69</td><td>    nd-&gt;ClientObject.CharacterObject.Set_layer<span class="k2">(</span>num2<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">70</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> trash<span class="k2">;</span></td></tr><tr><td class="number">71</td><td>&#160;</td></tr><tr><td class="number">72</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> num2<span class="k2">;</span></td></tr><tr><td class="number">73</td><td>    nd-&gt;ClientObject.CharacterObject.Set_source_X<span class="k2">(</span>num2<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">74</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> trash<span class="k2">;</span></td></tr><tr><td class="number">75</td><td>&#160;</td></tr><tr><td class="number">76</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> num2<span class="k2">;</span></td></tr><tr><td class="number">77</td><td>    nd-&gt;ClientObject.CharacterObject.Set_source_Y<span class="k2">(</span>num2<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">78</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> trash<span class="k2">;</span></td></tr><tr><td class="number">79</td><td>&#160;</td></tr><tr><td class="number">80</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> num2<span class="k2">;</span></td></tr><tr><td class="number">81</td><td>    <span class="k1">if</span> <span class="k2">(</span>num2<span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">82</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">83</td><td>      nd-&gt;ClientObject.CharacterObject.Set_collision<span class="k2">(</span><span class="k1">false</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">84</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">85</td><td>    <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>num2<span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span></td></tr><tr><td class="number">86</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">87</td><td>      nd-&gt;ClientObject.CharacterObject.Set_collision<span class="k2">(</span><span class="k1">true</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">88</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">89</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> trash<span class="k2">;</span></td></tr><tr><td class="number">90</td><td>&#160;</td></tr><tr><td class="number">91</td><td>&#160;</td></tr><tr><td class="number">92</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> num2<span class="k2">;</span></td></tr><tr><td class="number">93</td><td>    nd-&gt;ClientObject.CharacterObject.Set_frame<span class="k2">(</span>num2<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">94</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> trash<span class="k2">;</span></td></tr><tr><td class="number">95</td><td>&#160;</td></tr><tr><td class="number">96</td><td>&#160;</td></tr><tr><td class="number">97</td><td>&#160;</td></tr><tr><td class="number">98</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> num2<span class="k2">;</span></td></tr><tr><td class="number">99</td><td>    nd-&gt;ClientObject.CharacterObject.Set_direction<span class="k2">(</span>num2<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">100</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> trash<span class="k2">;</span></td></tr><tr><td class="number">101</td><td>&#160;</td></tr><tr><td class="number">102</td><td>&#160;</td></tr><tr><td class="number">103</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> num2<span class="k2">;</span></td></tr><tr><td class="number">104</td><td>    nd-&gt;ClientObject.CharacterObject.Set_sourcebitmap<span class="k2">(</span>num2<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">105</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> trash<span class="k2">;</span></td></tr><tr><td class="number">106</td><td>&#160;</td></tr><tr><td class="number">107</td><td>&#160;</td></tr><tr><td class="number">108</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> num2<span class="k2">;</span></td></tr><tr><td class="number">109</td><td>    <span class="k1">if</span> <span class="k2">(</span>num2<span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span></td></tr><tr><td class="number">110</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">111</td><td>      <span class="c">//nd-&gt;ClientObject.CharacterObject.Set_destbitmap();</span></td></tr><tr><td class="number">112</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">113</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> trash<span class="k2">;</span></td></tr><tr><td class="number">114</td><td>&#160;</td></tr><tr><td class="number">115</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> num2<span class="k2">;</span></td></tr><tr><td class="number">116</td><td>    <span class="c">//netId ++;</span></td></tr><tr><td class="number">117</td><td>    nd-&gt;ClientObject.CharacterObject.Set_id<span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">118</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> trash<span class="k2">;</span></td></tr><tr><td class="number">119</td><td>  </td></tr><tr><td class="number">120</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> num2<span class="k2">;</span></td></tr><tr><td class="number">121</td><td>    nd-&gt;ClientObject.CharacterObject.Set_inarea<span class="k2">(</span>num2<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">122</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> trash<span class="k2">;</span></td></tr><tr><td class="number">123</td><td>  </td></tr><tr><td class="number">124</td><td>    inData <span class="k3">&gt;</span><span class="k3">&gt;</span> num2<span class="k2">;</span></td></tr><tr><td class="number">125</td><td>    nd-&gt;ClientObject.CharacterObject.Set_socketid<span class="k2">(</span>num2<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">126</td><td>&#160;</td></tr><tr><td class="number">127</td><td>    nd-&gt;ClientObject.CharacterObject.Set_destx<span class="k2">(</span>nd-&gt;ClientObject.CharacterObject.Get_X<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">128</td><td>    nd-&gt;ClientObject.CharacterObject.Set_desty<span class="k2">(</span>nd-&gt;ClientObject.CharacterObject.Get_Y<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">129</td><td>    nd-&gt;ClientObject.CharacterObject.toString<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">130</td><td>    <span class="c">//need to load stats as well  </span></td></tr><tr><td class="number">131</td><td>    nd-&gt;SetNext<span class="k2">(</span> head <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">132</td><td>    head <span class="k3">=</span> nd<span class="k2">;</span></td></tr><tr><td class="number">133</td><td>    numItems2<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">134</td><td>  </td></tr><tr><td class="number">135</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">136</td><td>&#160;</td></tr><tr><td class="number">137</td><td>  inData.close<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">138</td><td>  </td></tr><tr><td class="number">139</td><td>  </td></tr><tr><td class="number">140</td><td><span class="k2">}</span></td></tr><tr><td class="number">141</td><td>&#160;</td></tr><tr><td class="number">142</td><td>&#160;</td></tr><tr><td class="number">143</td><td>&#160;</td></tr><tr><td class="number">144</td><td>&#160;</td></tr><tr><td class="number">145</td><td>&#160;</td></tr><tr><td class="number">146</td><td>&#160;</td></tr><tr><td class="number">147</td><td>  </td></tr><tr><td class="number">148</td><td>&#160;</td></tr><tr><td class="number">149</td><td>&#160;</td></tr><tr><td class="number">150</td><td>&#160;</td></tr><tr><td class="number">151</td><td><span class="c">///and save to file</span></td></tr><tr><td class="number">152</td><td><span class="k1">void</span> ClientDatabase::save<span class="k2">(</span> <span class="k2">)</span></td></tr><tr><td class="number">153</td><td><span class="k2">{</span></td></tr><tr><td class="number">154</td><td>  ClientConfig<span class="k3">*</span> nd<span class="k2">;</span></td></tr><tr><td class="number">155</td><td>  nd <span class="k3">=</span> head<span class="k2">;</span></td></tr><tr><td class="number">156</td><td>  </td></tr><tr><td class="number">157</td><td>  ofstream outData<span class="k2">;</span></td></tr><tr><td class="number">158</td><td>  outData.open<span class="k2">(</span><span class="s">"Clients.txt"</span> <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">159</td><td>  </td></tr><tr><td class="number">160</td><td>  outData <span class="k3">&lt;</span><span class="k3">&lt;</span> numItems2<span class="k2">;</span></td></tr><tr><td class="number">161</td><td>  outData <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">","</span><span class="k2">;</span></td></tr><tr><td class="number">162</td><td>  outData <span class="k3">&lt;</span><span class="k3">&lt;</span> endl<span class="k2">;</span></td></tr><tr><td class="number">163</td><td><span class="k1">while</span><span class="k2">(</span> nd <span class="k3">!</span><span class="k3">=</span> NULL <span class="k2">)</span> </td></tr><tr><td class="number">164</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">165</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> nd-&gt;ClientObject.Get_username<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">166</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> endl<span class="k2">;</span></td></tr><tr><td class="number">167</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> nd-&gt;ClientObject.Get_password<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">168</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> endl<span class="k2">;</span></td></tr><tr><td class="number">169</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> nd-&gt;ClientObject.CharacterObject.Get_name<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">170</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> endl<span class="k2">;</span></td></tr><tr><td class="number">171</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="n">1</span><span class="k2">;</span><span class="c">//nd-&gt;ClientObject.CharacterObject.Get_race();</span></td></tr><tr><td class="number">172</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">","</span><span class="k2">;</span></td></tr><tr><td class="number">173</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="n">1</span><span class="k2">;</span><span class="c">//nd-&gt;ClientObject.CharacterObject.Get_sex();</span></td></tr><tr><td class="number">174</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">","</span><span class="k2">;</span></td></tr><tr><td class="number">175</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> nd-&gt;ClientObject.CharacterObject.Get_X<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">176</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">","</span><span class="k2">;</span></td></tr><tr><td class="number">177</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> nd-&gt;ClientObject.CharacterObject.Get_Y<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">178</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">","</span><span class="k2">;</span></td></tr><tr><td class="number">179</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> nd-&gt;ClientObject.CharacterObject.Get_W<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>  </td></tr><tr><td class="number">180</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">","</span><span class="k2">;</span></td></tr><tr><td class="number">181</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> nd-&gt;ClientObject.CharacterObject.Get_H<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">182</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">","</span><span class="k2">;</span></td></tr><tr><td class="number">183</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> nd-&gt;ClientObject.CharacterObject.Get_layer<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">184</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">","</span><span class="k2">;</span></td></tr><tr><td class="number">185</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> nd-&gt;ClientObject.CharacterObject.Get_source_X<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">186</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">","</span><span class="k2">;</span></td></tr><tr><td class="number">187</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> nd-&gt;ClientObject.CharacterObject.Get_source_Y<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>  </td></tr><tr><td class="number">188</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">","</span><span class="k2">;</span></td></tr><tr><td class="number">189</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="n">0</span><span class="k2">;</span> <span class="c">//nd-&gt;ClientObject.CharacterObject.Is_in_collision();</span></td></tr><tr><td class="number">190</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">","</span><span class="k2">;</span></td></tr><tr><td class="number">191</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> nd-&gt;ClientObject.CharacterObject.Get_frame<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">192</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">","</span><span class="k2">;</span></td></tr><tr><td class="number">193</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="n">1</span> <span class="k2">;</span><span class="c">//nd-&gt;ClientObject.CharacterObject.Get_direction()</span></td></tr><tr><td class="number">194</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">","</span><span class="k2">;</span></td></tr><tr><td class="number">195</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> nd-&gt;ClientObject.CharacterObject.Get_sourcebitmap<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">196</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">","</span><span class="k2">;</span></td></tr><tr><td class="number">197</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="n">2</span><span class="k2">;</span><span class="c">//nd-&gt;ClientObject.CharacterObject.Get_destbitmap();</span></td></tr><tr><td class="number">198</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">","</span><span class="k2">;</span></td></tr><tr><td class="number">199</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> nd-&gt;ClientObject.CharacterObject.Get_id<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">200</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">","</span><span class="k2">;</span></td></tr><tr><td class="number">201</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> nd-&gt;ClientObject.CharacterObject.Get_inarea<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">202</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">","</span><span class="k2">;</span></td></tr><tr><td class="number">203</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> nd-&gt;ClientObject.CharacterObject.Get_socketid<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">204</td><td>    <span class="c">//need to save stats as well</span></td></tr><tr><td class="number">205</td><td>    outData <span class="k3">&lt;</span><span class="k3">&lt;</span> endl<span class="k2">;</span></td></tr><tr><td class="number">206</td><td>  </td></tr><tr><td class="number">207</td><td>&#160;</td></tr><tr><td class="number">208</td><td>   </td></tr><tr><td class="number">209</td><td>    </td></tr><tr><td class="number">210</td><td>    nd <span class="k3">=</span> nd-&gt;GetNext<span class="k2">(</span> <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">211</td><td>&#160;</td></tr><tr><td class="number">212</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">213</td><td>  </td></tr><tr><td class="number">214</td><td>  </td></tr><tr><td class="number">215</td><td>  outData.close<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">216</td><td>  </td></tr><tr><td class="number">217</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

edit: this is what the file looks like</p><p>7,<br />k<br />password<br />kay-anne<br />1,1,2060,1590,32,32,2,0,0,0,1,1,4,2,3,1,-1<br />piccolo<br />password<br />KingPiccolo<br />1,1,2095,1550,32,32,2,0,0,0,1,1,4,2,2,1,-1<br />kidbuu<br />password<br />kidbuu<br />1,1,2060,1590,32,32,2,0,0,0,1,1,4,2,1,1,-1<br />sun<br />password<br />smasher<br />1,1,2080,1585,32,32,2,0,0,0,1,1,4,2,1,1,-1<br />ben<br />password<br />bigben<br />1,1,2080,1585,32,32,2,0,0,0,1,1,4,2,1,1,-1<br />cell<br />password<br />Cell<br />1,1,2080,1585,32,32,2,0,0,0,1,1,4,2,1,1,-1<br />j<br />password</p><p>if it is unclear please tell me.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (piccolo)</author>
		<pubDate>Mon, 04 Dec 2006 23:26:25 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>If you can afford the dependency on <tt>Boost</tt>, it has a very neat serialization module. You can read up on it <a href="http://www.boost.org/libs/serialization/doc/index.html">here</a>. It works very nicely with STL, so if your array is in fact stored in a <tt>std::vector</tt> or a <tt>std::list</tt>, saving and loading the entire thing requires very little effort.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Indeterminatus)</author>
		<pubDate>Tue, 05 Dec 2006 06:30:39 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>piccolo: I certainly hope you didn&#39;t post peoples&#39; passwords in that list!  <img src="http://www.allegro.cc/forums/smileys/shocked.gif" alt=":o" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (TeamTerradactyl)</author>
		<pubDate>Wed, 06 Dec 2006 09:33:21 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>no those are test user accounts the password for all those users is password. but i disabled password input so it will be essayer to test every thing.<br /> i am recoding my character list as a unit list so i can read in many different objects from the same file.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (piccolo)</author>
		<pubDate>Wed, 06 Dec 2006 11:35:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>That&#39;s kind of a security risk, posting passwords in plain text... md5 them before you save them to the file?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Dalrymple)</author>
		<pubDate>Wed, 06 Dec 2006 11:40:01 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>yeah i know but this is still in developing faze so its a lot easer to debug when you can read whats in the text file.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (piccolo)</author>
		<pubDate>Wed, 06 Dec 2006 11:51:39 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Durnus,</p><p>I&#39;m not sure if it&#39;ll it&#39;ll work with arrays, but using ofstream.write (google on fstream) you can output a class:</p><div class="source-code snippet"><div class="inner"><pre><span class="p">#include &lt;fstream&gt;</span>
...

ofStream fout<span class="k2">(</span><span class="s">"someFileName"</span>, ios::binary<span class="k2">)</span><span class="k2">;</span>
fout.write<span class="k2">(</span><span class="k2">(</span><span class="k1">char</span><span class="k3">*</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k1">class</span>, <span class="k1">sizeof</span> <span class="k1">class</span><span class="k2">)</span><span class="k2">;</span>
fout.close<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>

...

ifstream fin<span class="k2">(</span><span class="s">"someFileName"</span>, ios::binary<span class="k2">)</span><span class="k2">;</span>
fin.read<span class="k2">(</span><span class="k2">(</span><span class="k1">char</span><span class="k3">*</span><span class="k2">)</span><span class="k3">&amp;</span><span class="k1">class</span>, <span class="k1">sizeof</span> <span class="k1">class</span><span class="k2">)</span><span class="k2">;</span>
fin.close<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>

...
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (HardTranceFan)</author>
		<pubDate>Wed, 06 Dec 2006 12:01:01 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Durnus, could you give a little more detail for clarification?</p><p>As piccolo&#39;s example showed, the first line of text you output states &quot;how many lines/records will follow&quot;, and you would loop that many times when you decide to read back the data.</p><p>Something like:</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p">#include &lt;fstream&gt;</span></td></tr><tr><td class="number">2</td><td>&#160;</td></tr><tr><td class="number">3</td><td><span class="k1">struct</span> userData</td></tr><tr><td class="number">4</td><td><span class="k2">{</span></td></tr><tr><td class="number">5</td><td>  public:</td></tr><tr><td class="number">6</td><td>    string f_name<span class="k2">;</span></td></tr><tr><td class="number">7</td><td>    string m_name<span class="k2">;</span></td></tr><tr><td class="number">8</td><td>    string l_name<span class="k2">;</span></td></tr><tr><td class="number">9</td><td>    string birthday<span class="k2">;</span> <span class="c">// YYMMDD format</span></td></tr><tr><td class="number">10</td><td>    <span class="k1">int</span> number_of_teeth<span class="k2">;</span></td></tr><tr><td class="number">11</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">12</td><td>&#160;</td></tr><tr><td class="number">13</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">14</td><td><span class="k2">{</span></td></tr><tr><td class="number">15</td><td>  userData newData<span class="k2">;</span></td></tr><tr><td class="number">16</td><td>  vector<span class="k3">&lt;</span>userData&gt; myArray<span class="k2">;</span></td></tr><tr><td class="number">17</td><td>  <span class="k1">int</span> numRecords<span class="k2">;</span></td></tr><tr><td class="number">18</td><td>&#160;</td></tr><tr><td class="number">19</td><td>  ifstream fin<span class="k2">;</span></td></tr><tr><td class="number">20</td><td>  fin.open<span class="k2">(</span><span class="s">"yourfile.txt"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>  fin <span class="k3">&gt;</span><span class="k3">&gt;</span> numRecords<span class="k2">;</span></td></tr><tr><td class="number">22</td><td>  <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> curRecord <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> curRecord <span class="k3">&lt;</span> numRecords<span class="k2">;</span> curRecord<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span></td></tr><tr><td class="number">23</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">24</td><td>    fin <span class="k3">&gt;</span><span class="k3">&gt;</span> newData.f_name <span class="k3">&gt;</span><span class="k3">&gt;</span> newData.m_name <span class="k3">&gt;</span><span class="k3">&gt;</span> newData.l_name <span class="k3">&gt;</span><span class="k3">&gt;</span> newData.birthday <span class="k3">&gt;</span><span class="k3">&gt;</span> newData.number_of_teeth<span class="k2">;</span></td></tr><tr><td class="number">25</td><td>    myArray.push_back<span class="k2">(</span>newData<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">26</td><td>    newData.clear<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">27</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">28</td><td>&#160;</td></tr><tr><td class="number">29</td><td>  <span class="c">// Your own code here to deal with the "myArray" vector</span></td></tr><tr><td class="number">30</td><td>&#160;</td></tr><tr><td class="number">31</td><td>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">32</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

You would have to have &quot;yourfile.txt&quot; in that specific order, and prefixed with the number of records you want to read in.</p><p>Another method would be to save each record on a separate line, and consider the newline as a record-delimiter (meaning you wouldn&#39;t have to know before-hand how many records you had, but you WOULD need some sort of dynamic array to store them into: like std::vector).</p><p>I guess my question is, you have &quot;an array&quot; of something.  Are you asking how to output to a file, or how to read in your array data from the disk after you&#39;re already saved it?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (TeamTerradactyl)</author>
		<pubDate>Wed, 06 Dec 2006 12:25:16 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You still aren&#39;t using a database? sqlite would work perfect for you in this case.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Wed, 06 Dec 2006 18:25:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>yeah i&#39;m am but i want to be the first mmrpg in the depot where someone can compile the code. if i put the 3rd party database that will mean in or to try my code you will have to have Oracla 10g installed. im going to make 2 versions of the game one with oracle and one with out. i did do the research and i got have a data base running on my computer. and i got it to work with c++ usint the ODB class library but ill save that for the other version of the game.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (piccolo)</author>
		<pubDate>Wed, 06 Dec 2006 20:33:27 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
yeah i&#39;m am but i want to be the first mmrpg in the depot where some can compile the code. if i put the 3rd party database that will mean in or to try my code you will have to have Oracla 10g installed. im going to make to version of the game one with oracle and one with out. i did do the research and i got have a data base running on my computer. and i got it to work with c++ use ODB class library but ill save that for the other version of the game.
</p></div></div><p>
No offense but; Did you even try to write in English?<br />Just use SQLite. It&#39;s &quot;light&quot;. Just one file with the database information, and (iirc) two files to add to your project to use. No servers or services needed.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jonatan Hedborg)</author>
		<pubDate>Wed, 06 Dec 2006 20:45:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You don&#39;t add ANY files to your project to use it. Just #include the sqlite header once you have sqlite installed.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Thu, 07 Dec 2006 14:46:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Right you are, i just checked. Just compile it and link the static library. It&#39;s also very easy to use (although I&#39;m not that crazy about the function-pointer dependent execute function).</p><p>And there are some nice, free, sqlite &quot;browsers&quot; out there.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jonatan Hedborg)</author>
		<pubDate>Thu, 07 Dec 2006 19:12:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Sorry about not responding to my post, but I can&#39;t use a computer during the week. <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" /></p><p>I don&#39;t really need specific code, but just a way to write to a file (a text file or whatever) and put it back into my program.</p><p>More specifically, what I need is a function to output to a file, (I am seeing this as outData in the examples.) and a function to get data from a file. (inData?) I also need to be able to tell when a new line starts.</p><p>And yes, I have already planned to use a vector to store my array on input, and to put it into a file I will iterate through my array and print the data in array-like form. <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Durnus)</author>
		<pubDate>Sat, 09 Dec 2006 10:30:27 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>all you need is:</p><p><span class="source-code"><a href="http://www.delorie.com/djgpp/doc/libc/libc_337.html" target="_blank">fopen</a>, <a href="http://www.delorie.com/djgpp/doc/libc/libc_371.html" target="_blank">fwrite</a>, <span class="k1">and</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_349.html" target="_blank">fread</a></span></p><p>or if using allegro I suggest using</p><p><span class="source-code"><a href="http://www.allegro.cc/manual/pack_fopen" target="_blank"><span class="a">pack_fopen</span></a>, <a href="http://www.allegro.cc/manual/pack_fwrite" target="_blank"><span class="a">pack_fwrite</span></a>, <span class="k1">and</span> <a href="http://www.allegro.cc/manual/pack_fread" target="_blank"><span class="a">pack_fread</span></a></span></p><p>the allegro routines can be setup to use transparent compression.</p><p> <b>-- Offtopic: --</b></p><p>Don&#39;t use oracle as a db server for a game, use sqlite, or if you absolutely have to mysql (mysql is free and can be setup anywhere, oracle is not) -- as a side option there is always SQL Server, the 2005 version is free but only supports one connection at a time or something along those lines...  anyway lots of web hosts will sell you access to sql server 2000/2005 for under $10/mo ... -- sorry to butt in if I&#39;m misunderstanding.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Michael Jensen)</author>
		<pubDate>Sat, 09 Dec 2006 11:15:22 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Durnus, are you asking to open the array into a file using the Allegro library, or just &quot;in general&quot; using <tt>iostream</tt>s?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (TeamTerradactyl)</author>
		<pubDate>Sat, 09 Dec 2006 22:20:06 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
anyway lots of web hosts will sell you access to sql server 2000/2005 for under $10/mo
</p></div></div><p>

What webhosts do that? Most hosts, in most cases, if they are smart, only allow access to their SQL servers from other servers that they run. A SQL server open to the public is usually a big security issue, especially if it&#39;s a Microsoft product.</p><p>But, I do agree that sqlite is the best idea here.</p><p>But anyway, if you are planning on running an open SQL server for the release version of your game you have serious design flaws. The clients shouldn&#39;t even know about SQL (unless they use sqlite for local storage). All processing and such should be done by the server and stored server side on to private SQL storage.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Sun, 10 Dec 2006 06:00:23 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I didn&#39;t say <b>direct</b> access -- I&#39;ve actually not done it -- but my host offers it, I&#39;m not sure HOW you access it, and the only server that has direct access to it is the web server -- I probably have to login to some web interface that lets me run DB scripts / manage my own DB&#39;s permissions -- and I&#39;m pretty sure that the $10 is per DB... -- However my host also offers access to mysql databases... I wonder if they charge for it? probably.</p><p>Back on topic, yeah: no, the client should never have access to the database, the database should be server side -- sqlite is light, easy, and fast -- it&#39;s also file based instead of client/server based (sql server/mysql both require TCP connections, even if it&#39;s thru local host...)</p><p>mysql/sql server hosting with your game hosting is going to cost a pretty penny.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Michael Jensen)</author>
		<pubDate>Sun, 10 Dec 2006 08:02:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>oracle is free as long as its not used for comurshell purpuses. plus using it in your games is a good why to learn it for the work place.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (piccolo)</author>
		<pubDate>Sun, 10 Dec 2006 08:15:40 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>it&#39;s really not suited for game development though -- again it&#39;s a server database engine -- I suppose if whoever is hosting your game is also hosting an oracle server then why not? -- but it&#39;s going to be slower than SQLite, larger, and harder to work with...  also Oracle seems like it&#39;s getting obscure anymore -- the only places that I&#39;ve worked that use Oracle, use Orcale because they&#39;ve been using it 15 to 20 years...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Michael Jensen)</author>
		<pubDate>Sun, 10 Dec 2006 08:19:36 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">TeamTerradactyl said:</div><div class="quote"><p>

Durnus, are you asking to open the array into a file using the Allegro library, or just &quot;in general&quot; using iostreams?
</p></div></div><p>

Good question.</p><p>All I&#39;m asking is to be able to write into a file and put the file into a variable.</p><p>(EDIT: ) I&#39;m not looking to use the allegro library, I&#39;m actually hoping to use some standard library, such as fstream.</p><p>Now I know how to write into a file, but I still don&#39;t know how to read a file into a variable. All the websites I look at aren&#39;t very clear about reading.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Durnus)</author>
		<pubDate>Sun, 10 Dec 2006 19:55:55 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>BTW, HardTranceFan, that is a horrible practice which should <u>not</u> be practiced (writing whole classes/structs to files).</p><p>Anyway, Durnus, did you read <a href="http://www.allegro.cc/forums/thread/588899/633084#target">this post?</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Sun, 10 Dec 2006 22:55:26 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Durnus said:</div><div class="quote"><p>
Now I know how to write into a file, but I still don&#39;t know how to read a file into a variable. All the websites I look at aren&#39;t very clear about reading.
</p></div></div><p>

Durnus, if you are already using fstream to write OUT to a file, you can use the same function to read it back in.  (Some example code is in this same thread: <a href="http://www.allegro.cc/forums/thread/588899/633084#target">http://www.allegro.cc/forums/thread/588899/633084#target</a> )</p><p>Might I also suggest:  If you&#39;ve ever used &quot;cin&quot; or &quot;cout&quot; from the console for a simple &quot;Hello World&quot; program, you can use fstream in almost the exact same way: I usually name my &quot;file input&quot; and &quot;file output&quot; as &quot;fin&quot; and &quot;fout&quot;, to match the &quot;console (in|out)&quot; of &quot;(cin|cout)&quot;:
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p">#include &lt;fstream&gt;</span></td></tr><tr><td class="number">2</td><td><span class="p">#include &lt;vector&gt;</span></td></tr><tr><td class="number">3</td><td>&#160;</td></tr><tr><td class="number">4</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">5</td><td><span class="k2">{</span></td></tr><tr><td class="number">6</td><td>  <span class="k1">int</span> rows<span class="k2">;</span> <span class="c">// In your source code, declare the variables you want to "import" your</span></td></tr><tr><td class="number">7</td><td>  <span class="k1">int</span> cols<span class="k2">;</span> <span class="c">// data into.  These first two types are integers, as the size of the</span></td></tr><tr><td class="number">8</td><td>            <span class="c">// map will be written as the first two values in a file</span></td></tr><tr><td class="number">9</td><td>  <span class="k1">int</span> fileInput<span class="k2">;</span>  <span class="c">// This is where the data read in from the file will be temporarily stored</span></td></tr><tr><td class="number">10</td><td>  vector<span class="k3">&lt;</span>int&gt; theMap<span class="k2">;</span> <span class="c">// This is where the data will be stored for the rest of your</span></td></tr><tr><td class="number">11</td><td>                      <span class="c">// the time you are inside your game</span></td></tr><tr><td class="number">12</td><td>&#160;</td></tr><tr><td class="number">13</td><td>  ifstream fin<span class="k2">;</span>       <span class="c">// I like "FIN" to signify "file input"</span></td></tr><tr><td class="number">14</td><td>  fin.open<span class="k2">(</span><span class="s">"your_map_file.map"</span>, ios::in<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td>&#160;</td></tr><tr><td class="number">16</td><td>  fin <span class="k3">&gt;</span><span class="k3">&gt;</span> rows<span class="k2">;</span> <span class="c">// The first line of the map contains the number of rows</span></td></tr><tr><td class="number">17</td><td>  fin <span class="k3">&gt;</span><span class="k3">&gt;</span> cols<span class="k2">;</span> <span class="c">// The second line of the map contains the number of columns</span></td></tr><tr><td class="number">18</td><td>&#160;</td></tr><tr><td class="number">19</td><td>  <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> currentRow <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> currentRow <span class="k3">&lt;</span> rows<span class="k2">;</span> currentRow<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span></td></tr><tr><td class="number">20</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">21</td><td>    <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> currentCol <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> currentCol <span class="k3">&lt;</span> cols<span class="k2">;</span> currentCol<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span></td></tr><tr><td class="number">22</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">23</td><td>      fin <span class="k3">&gt;</span><span class="k3">&gt;</span> fileInput<span class="k2">;</span>  <span class="c">// This pulls in each bit of data (the "&gt;&gt;" ignores whitespace)</span></td></tr><tr><td class="number">24</td><td>      theMap.push_back<span class="k2">(</span>fileInput<span class="k2">)</span><span class="k2">;</span> <span class="c">// Push the data now stored in "fileInput" to your vector</span></td></tr><tr><td class="number">25</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">26</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">27</td><td>&#160;</td></tr><tr><td class="number">28</td><td>  <span class="c">// Your "theMap" vector should now contain (rows * cols) number of entries, all</span></td></tr><tr><td class="number">29</td><td>  <span class="c">// collected from the "your_map_file.map" file</span></td></tr><tr><td class="number">30</td><td>&#160;</td></tr><tr><td class="number">31</td><td>  <span class="c">// We are done with "fin", so close it:</span></td></tr><tr><td class="number">32</td><td>  fin.close<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">33</td><td>&#160;</td></tr><tr><td class="number">34</td><td>  ...<span class="k1">do</span> stuff with your map...</td></tr><tr><td class="number">35</td><td>&#160;</td></tr><tr><td class="number">36</td><td>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">37</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

I hope this helps a bit: You OUTPUT to the screen or file with &quot;&lt;&lt;&quot;, like <tt>cout &lt;&lt; &quot;Hello, world!&quot;</tt> and read INPUT from a keyboard (console input device) or file with &quot;&gt;&gt;&quot;, like <tt>cin &gt;&gt; userResponse;</tt> or <tt>fin &gt;&gt; someDataFromFile;</tt>.</p><p>I hope this helps!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (TeamTerradactyl)</author>
		<pubDate>Sun, 10 Dec 2006 23:32:28 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yes, it helps, but I just need one more thing.</p><p>How does the inputting know where to stop putting the data into a variable? Does it stop when it hits a space? Does it stop when it hits a new line? Can I set what it stops at?</p><p>From what I&#39;ve seen, the input function keeps on incrementing itself, and that was a question I had.</p><p>Anyway, thanks for all the help. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Durnus)</author>
		<pubDate>Mon, 11 Dec 2006 02:25:27 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The basic &quot;&gt;&gt;&quot; operator stops at all whitespace, so it will read in &quot;12345 4345 888&quot; as three separate numbers (or strings of char, or even std::string&#39;s).  It completely ignores whitespace (spaces and tabs), and newlines.</p><p>For a school project, we had been asked to read in a line of text, parse the important data, then continue to the next line, etc.</p><p>The &quot;getline&quot; function will stop at whitespaces (you can also tell it to stop at a certain character, like a space or even a specific character).  If you have a stream (like an fstream), the parameters I&#39;ve used are:<br /><span class="source-code">  getline<span class="k2">(</span>fin, some_string, <span class="s">'\n'</span><span class="k2">)</span><span class="k2">;</span></span> to read in from &quot;fin&quot; input stream, save the data to the &quot;some_string&quot; string, and stop as soon as it sees a newline character.  The third parameter is &#39;\n&#39; by default, so if you change it to something else, it will stop parsing &quot;the line&quot; when it hits that character (so if you have line-comments that start with &#39;#&#39;, you can use that).  If you leave off that third parameter, it assumes you want just to the end of the line.</p><p>Does that help?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (TeamTerradactyl)</author>
		<pubDate>Mon, 11 Dec 2006 13:07:23 +0000</pubDate>
	</item>
</rss>
