用C++; 我在C++中写一个工资程序,需要能够读取文件中的行,计算,然后重写文件中的读行。是否有一个函数/方法可以简单地覆盖特定的行,插入新的行,添加到现有文件的结尾?< P>没有在文本文件中“插入”或“删除”文本的C++功能。唯一的方法是读入现有文本,然后写出修改后的文本
如果新文本与旧文本放在同一个空间中,则只需覆盖现有文本,当然,您可以在.CSV文件中的逗号前后添加额外的空格,而不会使其成为“字段”的一部分。但是,如果新数据更长,它肯定无法“就地覆盖”用C++; 我在C++中写一个工资程序,需要能够读取文件中的行,计算,然后重写文件中的读行。是否有一个函数/方法可以简单地覆盖特定的行,插入新的行,添加到现有文件的结尾?< P>没有在文本文件中“插入”或“删除”文本的C++功能。唯一的方法是读入现有文本,然后写出修改后的文本,c++,csv,file-io,C++,Csv,File Io,如果新文本与旧文本放在同一个空间中,则只需覆盖现有文本,当然,您可以在.CSV文件中的逗号前后添加额外的空格,而不会使其成为“字段”的一部分。但是,如果新数据更长,它肯定无法“就地覆盖” 通过使用ios\u base::ate修饰符,添加到末尾相对容易。但是中间插入仍然包括基本的阅读,直到你找到相关的地方,然后,如果新文本较长,你必须阅读以下所有行,然后才能写出新的一行 因为您想读写特定的行,所以您应该研究读写文本文件。在std图书馆的fstream上看一看。这听起来像是可以用脚本语言解决的问题
通过使用
ios\u base::ate
修饰符,添加到末尾相对容易。但是中间插入仍然包括基本的阅读,直到你找到相关的地方,然后,如果新文本较长,你必须阅读以下所有行,然后才能写出新的一行 因为您想读写特定的行,所以您应该研究读写文本文件。在std图书馆的fstream上看一看。这听起来像是可以用脚本语言解决的问题。这是一个可行的选择吗?我建议您使用SQL数据库,而可能是C++中可能的SQL数据库。我对c++编程比较陌生,所以如果我重写一行,它需要相同长度的字符吗?或者是否需要相同长度的字符串(包括值/逗号)整行必须具有完全相同的字符数,或者旧行的一些“剩余”将保留在文件中(如果新行较短),或者下一行(的一部分)将被覆盖(如果新行比旧行长)。在典型的情况下,我将每一行读入一个数组,并修改该数组中的相关行[换句话说,std::vector
],然后将其重新写出来。[数组可能是每行一个字符串,或者是每个元素的类型的向量,或者它们是相同的,或者某种结构-取决于您的输入是什么…]好的,非常感谢,这非常有帮助。最后一个对我有很大帮助的问题是,是否可以根据程序中的行数创建数组?如果使用std::vector
,在读取文件之前不需要知道行数。只要对你读过的每一行使用push_back
。