《C++语言基础》程序翻阅——二进制文件及文件的随机读写(4)

《C++语言基础》程序阅读——二进制文件及文件的随机读写(4)

4、阅读并运行下面的示例,体会二进制文件和字符串流操作的一般方法。 
例16

<code class="hljs cpp has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#include<iostream></span>
<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#include <fstream></span>
<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#include<cstdlib></span>
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">using</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">namespace</span> <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">std</span>;
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">struct</span> student
{
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> num;
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">char</span> name[<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">20</span>];
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">float</span> score;
};
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> main( )
{
    student stud[<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span>]={<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1001</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Li"</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">85</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1002</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Fun"</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">97.5</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1004</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Wang"</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">54</span>,
        <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1006</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Tan"</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">76.5</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1010</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"ling"</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">96</span>};
    fstream iofile(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"stud.dat"</span>,ios::in|ios::out|ios::binary);  
    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//用fstream类定义输入输出二进制文件流对象iofile</span>
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span>(!iofile)
    {
        <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">cerr</span><<<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"open error!"</span><<endl;
        <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">abort</span>( );
    }
    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//(1)向磁盘文件输出5个学生的数据并显示出来</span>
    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">cout</span><<<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"(1)向磁盘文件输出5个学生的数据并显示出来"</span><<endl;
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span>(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> i=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;i<<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span>;i++)
    {
        iofile.write((<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">char</span> *)&stud[i],<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span>(stud[i])); 
        <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">cout</span><<stud[i].num<<<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">" "</span><<stud[i].name<<<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">" "</span><<stud[i].score<<endl;
    }

    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//(2)将磁盘文件中的第1,3,5个学生数据读入程序,并显示出来;</span>
    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">cout</span><<<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"(2)将磁盘文件中的第1,3,5个学生数据读入程序,并显示出来"</span><<endl;
    student stud1[<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span>];                  <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//用来存放从磁盘文件读入的数据</span>
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span>(i=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;i<<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span>;i=i+<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>)
    {
        iofile.seekg(i*<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span>(stud[i]),ios::beg);  <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//定位于第0,2,4学生数据开头</span>
        iofile.read((<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">char</span> *)&stud1[i/<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>],<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span>(stud1[<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>])); 
        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//先后读入3个学生的数据,存放在stud1[0],stud[1]和stud[2]中</span>
        <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">cout</span><<stud1[i/<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>].num<<<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">" "</span><<stud1[i/<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>].name<<<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">" "</span><<stud1[i/<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>].score<<endl;
        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//输出stud1[0],stud[1]和stud[2]各成员的值</span>
    }
    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">cout</span><<endl;

    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//(3) 将第3个学生的数据修改后存</span>
回磁盘文件中的原有位置。
    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">cout</span><<<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"(3)将第3个学生的数据修改后存回磁盘文件中的原有位置"</span><<endl;
    stud[<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>].num=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1012</span>;                         <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//修改第3个学生(序号为2)的数据</span>
    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">strcpy</span>(stud[<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>].name,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Wu"</span>);
    stud[<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>].score=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">60</span>;
    iofile.seekp(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>*<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span>(stud[<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>]),ios::beg);   <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//定位于第3个学生数据的开头</span>
    iofile.write((<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">char</span> *)&stud[<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>],<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span>(stud[<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>])); <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//更新第3个学生数据</span>
    iofile.seekg(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>,ios::beg);                       <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//重新定位于文件开头</span>

    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//(4)从磁盘文件读入修改后的5个学生的数据并显示出来。</span>
    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">cout</span><<<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"(4)从磁盘文件读入修改后的5个学生的数据并显示出来"</span><<endl;
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span>(i=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;i<<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span>;i++)
    {
        iofile.read((<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">char</span> *)&stud[i],<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span>(stud[i]));  <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//读入5个学生的数据</span>
        <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">cout</span><<stud[i].num<<<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">" "</span><<stud[i].name<<<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">" "</span><<stud[i].score<<endl;
    }
    iofile.close( );
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;
}</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li><li style="box-sizing: border-box; padding: 0px 5px;">38</li><li style="box-sizing: border-box; padding: 0px 5px;">39</li><li style="box-sizing: border-box; padding: 0px 5px;">40</li><li style="box-sizing: border-box; padding: 0px 5px;">41</li><li style="box-sizing: border-box; padding: 0px 5px;">42</li><li style="box-sizing: border-box; padding: 0px 5px;">43</li><li style="box-sizing: border-box; padding: 0px 5px;">44</li><li style="box-sizing: border-box; padding: 0px 5px;">45</li><li style="box-sizing: border-box; padding: 0px 5px;">46</li><li style="box-sizing: border-box; padding: 0px 5px;">47</li><li style="box-sizing: border-box; padding: 0px 5px;">48</li><li style="box-sizing: border-box; padding: 0px 5px;">49</li><li style="box-sizing: border-box; padding: 0px 5px;">50</li><li style="box-sizing: border-box; padding: 0px 5px;">51</li><li style="box-sizing: border-box; padding: 0px 5px;">52</li><li style="box-sizing: border-box; padding: 0px 5px;">53</li><li style="box-sizing: border-box; padding: 0px 5px;">54</li><li style="box-sizing: border-box; padding: 0px 5px;">55</li><li style="box-sizing: border-box; padding: 0px 5px;">56</li><li style="box-sizing: border-box; padding: 0px 5px;">57</li><li style="box-sizing: border-box; padding: 0px 5px;">58</li><li style="box-sizing: border-box; padding: 0px 5px;">59</li><li style="box-sizing: border-box; padding: 0px 5px;">60</li><li style="box-sizing: border-box; padding: 0px 5px;">61</li><li style="box-sizing: border-box; padding: 0px 5px;">62</li></ul>

《C++语言基础》程序翻阅——二进制文件及文件的随机读写(4)

例17

<code class="hljs cpp has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#include <strstream></span>
<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#include<iostream></span>
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">using</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">namespace</span> <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">std</span>;
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">struct</span> student
{
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> num;
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">char</span> name[<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">20</span>];
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">float</span> score;
};

<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> main( )
{
    student stud[<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>]={<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1001</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Li"</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">78</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1002</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Wang"</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">89.5</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1004</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Fun"</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">90</span>};
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">char</span> c[<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">50</span>];                <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//用户定义的字符数组</span>
    ostrstream strout(c,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">30</span>);   <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//建立输出字符串流,与数组c建立关联,缓冲区长30</span>
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span>(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> i=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;i<<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>;i++)       <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//向字符数组c写3个学生的数据</span>
        strout<<stud[i].num<<stud[i].name<<stud[i].score;
    strout<<ends;              <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//ends是C++的I/O操作符,插入一个′\\0′</span>
    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">cout</span><<<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"array c:"</span><<c<<endl;    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//显示字符数组c中的字符</span>
    ostrstream strout1(c,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">40</span>);  <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//这时,c将被重写</span>
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span>(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> i=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;i<<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>;i++)       
        strout1<<stud[i].num<<<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">" "</span><<stud[i].name<<<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">" "</span><<stud[i].score;
    strout1<<ends;              <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//ends是C++的I/O操作符,插入一个′\\0′</span>
    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">cout</span><<<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"array c:"</span><<c<<endl;    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//显示字符数组c中的字符</span>
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;
}</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li></ul>

《C++语言基础》程序翻阅——二进制文件及文件的随机读写(4)

例18

<code class="hljs cpp has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#include <strstream></span>
<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#include<iostream></span>
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">using</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">namespace</span> <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">std</span>;
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> main( )
{
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">char</span> c[<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">50</span>]=<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"12 34 65 -23 -32 33 61 99 321 32"</span>;
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> a[<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">10</span>],i,j,t;
    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">cout</span><<<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"array c:"</span><<c<<endl;<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//显示字符数组中的字符串</span>
    istrstream strin(c,<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span>(c));    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//建立输入串流对象strin并与字符数组c关联</span>
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span>(i=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;i<<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">10</span>;i++)
        strin>>a[i];                     <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//从字符数组c读入10个整数赋给整型数组a</span>
    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">cout</span><<<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"array a:"</span>;
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span>(i=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;i<<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">10</span>;i++)
        <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">cout</span><<a[i]<<<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">" "</span>;                 <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//显示整型数组a各元素</span>
    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">cout</span><<endl;
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span>(i=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;i<<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9</span>;i++)                   <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//用起泡法对数组a排序</span>
        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span>(j=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;j<<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9</span>-i;j++)
            <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span>(a[j]>a[j+<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>])
            {
                t=a[j];
                a[j]=a[j+<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>];
                a[j+<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>]=t;
            }
    ostrstream strout(c,<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">sizeof</span>(c));    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//建立输出串流对象strout并与字符数组c关联</span>
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span>(i=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;i<<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">10</span>;i++)
        strout<<a[i]<<<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">" "</span>;               <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//将10个整数存放在字符数组c</span>
    strout<<ends;                      <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//加入′\\0′</span>
    <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">cout</span><<<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"array c:"</span><<c<<endl;         <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//显示字符数组c</span>
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;
} </code><code class="hljs cpp has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background: transparent;"><img src="http://img.blog.****.net/20150616183746652?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenBfX193YWo=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
</code>