将多种数据类型写入文件时的附加行和额外数组元素

时间:2017-04-06 07:54:08

标签: c++

我放弃了这个项目并重新开始了。请忽略。

新来的。我有一个作业,而且我的代码编辑部分遇到了问题。我将在下面发布,但基本上代码的作用是将新项目添加到txt文件,然后从文件中读取并允许用户编辑数字。我现在只想尝试添加,因为减法可以在以后处理。问题是,随着文件的每次连续“编辑”(我读入数组),文件变得越来越混乱。第一次,添加额外的空白行。第二次,添加另一个额外的空白行,并且部分复制和粘贴来自文件另一部分的信息。

我非常感谢您提前帮助。我将发布以下功能。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="submit" name="duplicateselect" class="btn btn-primary">
<div class="row">
  <div class="col-lg-12">
    <div class="form-group">
      <label for="select1">ELEMENT 1</label>
      <select class="form-control" name="select2" id="select2">
        <option value="H">HYDORGEN</option>
        <option value="O">OXYGEN</option>
        <option value="K">POTASSIUM</option>
      </select>
    </div>
  </div>
  <div class="col-lg-12">
    <div class="form-group">
      <label for="select2">ELEMENT 2</label>
      <select class="form-control" name="select2" id="select3">
        <option value="H">HYDORGEN</option>
        <option value="O">OXYGEN</option>
        <option value="K">POTASSIUM</option>
      </select>
    </div>
  </div>
  <input type="text" class="form-control" placeholder="Combination Here" name="combination" id="combination">
</div>

}

编辑:当尝试使用for循环在cmd中打印数组时,我注意到它实际上是在数组的2个元素中重复,或者在将一个数组留空后重复自身。

1 个答案:

答案 0 :(得分:0)

好的,决定解释我的最后评论:

我怀疑这个问题的实施者是以下几点:

for (j=0; j<n; j++){

FileSave << item[j].name << " | " ;
FileSave << item[j].qty << " + ";
FileSave << item[j].price << " @ " ;
FileSave << item[j].cpi;
FileSave << endl;}

让我们看一下实际文档中实际上只有一行的内容。 n = 1,因此循环以j = 0开始并且运行一次。 我们将所有内容写入第一行,然后,为了完成循环,我们添加换行符,有效地创建2行。第一个包含有效信息,第二个包含换行符。没有信息的这一新行将我们的程序混淆在随后的尝试中。

所以我们可以通过不在最后一个位置放置换行来结束循环,这看起来像:

for (j=0; j<n; j++){
    FileSave << item[j].name << " | " ;
    FileSave << item[j].qty << " + ";
    FileSave << item[j].price << " @ " ;
    FileSave << item[j].cpi;
    if(j!=n-1){FileSave << endl;}
}

可悲的是,我还无法测试代码,但我希望你可以使用它:9

编辑::好的,因为那不起作用:

我的第二个怀疑是该名称可能以换行符开头,因为换行符永远不会消耗掉。我们可能会尝试做类似的事情:

while (!FileSearch.eof()){
    getline(FileSearch, name, '|');
    item[i].name=name;
    FileSearch >> qty;
    item[i].qty=qty;
    getline(FileSearch, name, '+');
    FileSearch >> price;
    item[i].price=price;
    getline(FileSearch, name, '@');
    FileSearch >> cpi;
    item[i].cpi=cpi;
    getline(FileSearch,name);
    i++;
}

仍然不确定这是否是正确的解决方案。

每次编辑之前和之后有关文本文档状态的任何和所有信息都会有所帮助:)