C++ 如何将数据插入预先分配的CSV?
文本文件(或CSV)为: (但有100个“,”s) <>在C或C++中,我想打开文件,然后在“,”.bR>之间填充值。 i、 e.-C++ 如何将数据插入预先分配的CSV?,c++,c,file,file-io,C++,C,File,File Io,文本文件(或CSV)为: (但有100个“,”s) 在C或C++中,我想打开文件,然后在“,”.bR>之间填充值。 i、 e.-数据:,1,2,3,4\n 我猜我需要某种搜索来找到下一个逗号,插入数据,找到下一个逗号插入,等等 我在看memchr()的缓冲区,想知道文本文件是否也有类似的缓冲区 如果你能给我指出正确的方向,我将不胜感激 (我也不介意读一本书来找出这样的东西,我只是不知道哪本书会有这样的信息?) 谢谢你。你不能在C。。。如果以读/写模式打开,将覆盖字符,而不是插入字符 您需要打开
数据:,1,2,3,4\n
我猜我需要某种搜索来找到下一个逗号,插入数据,找到下一个逗号插入,等等
我在看memchr()的缓冲区,想知道文本文件是否也有类似的缓冲区
如果你能给我指出正确的方向,我将不胜感激
(我也不介意读一本书来找出这样的东西,我只是不知道哪本书会有这样的信息?)
谢谢你。你不能在C。。。如果以读/写模式打开,将覆盖字符,而不是插入字符 您需要打开文件,将该行读入内存,将新行写入临时文件 插入完所有行后,将临时文件复制到原始文件上。我认为没有其他的方法来做。 < P>(这是C++案例) 只需将数据解析为包含数据的对象的链表,修改数据并覆盖文件 首先需要将数据拆分为行(\n创建一个新的链表元素): 将获取字符串(伪列表): [“数据:,,,,,,”数据2:,,,,,,“] 因此,现在需要为每条线定义对象,如:
class LineStruct {
public:
string head;
LinkedList<string> data;
};
类LineStruct{
公众:
线头;
链接列表数据;
};
然后填满它
然后编辑数据结构,然后将其写回磁盘。如果有
Data:,,,,,\n
然后没有空间了,要填补,你必须写出全新的行
但是如果你有
Data: , , , , , \n
然后您可以只覆盖由''
在C语言中,您将查找文件的一部分并写入,然后查找下一个pos,对不起,我头上没有代码。这是我要查找的地方:
- 用于将行读入
- 为了找到昏迷
- 用于构建新的输出线
正如所建议的,您必须使用临时文件,或者在内存中保留所有新行,直到所有行都被处理完毕,然后覆盖原始文件。根据文件的大小,您可以将其完全加载到内存中,然后在写回时插入数据。这不需要临时文件。使用临时文件的另一个原因是确保在发生崩溃时,不会用已损坏的半成品新文件替换完好的旧文件。但在这种情况下,这并不重要,因为旧文件只是一个空模板。
Data:,,,,,\n
Data: , , , , , \n