修改并附加文件中的额外行
Modify and append extra lines in a file
打开一个文件并在Qt中修改它有点困难。我有一个文件,里面有一些内容。现在我想打开它,再添加几行。
例如,在这里我打开文件
void MainWindow::on_pushButton_readlog_clicked()
{
QString filename = "logfilename.txt";
QFile originalFile(filename);
if(!originalFile.open(QIODevice:: QIODevice::ReadWrite))
{
qDebug () << "Error opening Log file: "<<originalFile.errorString();
return;
}
else
{
QTextStream instream(& originalFile);
QString line = instream.readLine();
while(!instream.atEnd())
{
QString line =instream.readLine(); // I can read line by line
qDebug()<<line;
}
originalFile.close();
}
}
基本上,在这里我想保留文件的所有内容,但添加两个前两行的额外文本:第1行:";名称:ODL12";第2行:";设备ID:45R";
看起来我需要"附加";但不知道如何在Qt 中做到这一点
创建一个新文件并将内容复制(写入(到原始文件+mods,删除新文件或旧文件并重命名新文件。
https://www.cplusplus.com/reference/fstream/ofstream/
https://www.codevscolor.com/c-plus-plus-delete-a-file
https://cplusplus.com/reference/cstdio/rename/
也许这对你有用。。。更容易。
#include <fstream>
#include <sstream>
#include <vector>
#include <string>
#include <iostream>
#include <ctime>
using namespace std;
typedef std::vector<string> Vector;
void readReadFile(string &fileName, Vector &array){
std::ifstream file(fileName);
if(file.fail()){
//File does not exist code here
std::cout << "File doesn't exist." << endl;
return;
}
else{
std::string str;
while (std::getline(file, str)) {
array.push_back(str);
}
file.close();
}
}
void appendstuff(string text, Vector &array){
array.push_back(text);
}
void writebacktofile(string &fileName, Vector &array){
// https://stackoverflow.com/questions/17032970/clear-data-inside-text-file-in-c
std::ofstream myfile;
myfile.open(fileName, std::ofstream::out | std::ofstream::trunc);
//myfile.close();
// write vector back to file
//ofstream myfile;
//myfile.open (fileName);
for(auto& k : array)
myfile << k << "n";
myfile.close();
array.clear();
}
int main(){
std::clock_t start;
double duration;
start = std::clock();
Vector temporary;
string fileName = "input.txt";
readReadFile(fileName, temporary);
appendstuff("hello", temporary);
appendstuff("howdy", temporary);
writebacktofile(fileName, temporary);
duration = ( std::clock() - start ) / (double) CLOCKS_PER_SEC;
std::cout<<"printf: "<< duration << " seconds" << 'n';
return 0;
}
执行时间:0.000295秒
相关文章:
- QML:修改在不同QML文件(而非main.QML)中定义的子对象的属性
- 已修改的LinkedList未在文本文件本身中更新
- C++RapidXml-使用first_node()遍历以修改XML文件中节点的值
- 什么文件可以修改 atom 的C++语法?
- 修改生成文件以简化框架 #include 路径
- Windows std::fstream 修改文件后打开()?
- Chilkat SFTP 文件修改时间不与上传更新
- 如何在 Windows 上的 C++ 中根据文件的修改时间读取目录中的文件
- 如何使用Winforms C#或C++.Net在不更改文件中其他内容的情况下修改jpg文件中的Orientation e
- 如何修改Lambda表达式以将输出放入文本文件
- 修改 XML 文件 QXMLStreamReader/Writer
- 如何从 avi 文件中抓取所有帧 - 如何修改 MS 样本采集卡样本
- accept(..) 似乎正在修改我给它的文件描述符参数
- 将头文件和相关修改添加到生成文件
- 在没有root权限的情况下安装NTL,并在生成文件中修改其构建路径
- 如何使用c 在Windows中使用更改日记帐查找文件修改
- 使用生成文件修改项目组织
- 以非管理员身份在 Windows 上的 C 中检查上次文件修改时间
- 在C++中设置文件修改时间的可移植方法
- 使用stat api获取不正确的文件修改时间