本文已参与「新人创作礼」活动,一起开启掘金创作之路。
在处理csv时,经常遇上特殊字符处理的情况,比如逗号,回车,要知道这些字符本身就是csv的分隔符与换行符。
经常遇上的问题如下:
void MainWindow::on_pushButton_4_clicked()
{
QString strFilePath = "D:\\temp\\test.csv";
FILE *fp = fopen(strFilePath.toStdString().c_str(), "w+");
qDebug()<<fp<<"\n";
QString LogStr = "学号,姓名,做的事情\n";
fwrite(LogStr.toLocal8Bit().data(), 1, LogStr.toLocal8Bit().size(), fp);
qDebug()<<fp<<"\n";
LogStr = "1,小明,吃饭,学习\n做操\n";
fwrite(LogStr.toLocal8Bit().data(), 1, LogStr.toLocal8Bit().size(), fp);
qDebug()<<fp<<"\n";
LogStr = "2,小红,吃饭,学习\n做操\n";
fwrite(LogStr.toLocal8Bit().data(), 1, LogStr.toLocal8Bit().size(), fp);
LogStr = "3,小李,吃饭,学习\n做操\n";
qDebug()<<fp<<"\n";
fwrite(LogStr.toLocal8Bit().data(), 1, LogStr.toLocal8Bit().size(), fp);
fclose(fp);
}
明显可以看到,做的事情况,都到学号里面了,这就乱了。 怎么解决这一个问题呢? 看下面:
void MainWindow::on_pushButton_4_clicked()
{
QString strFilePath = "D:\\temp\\test.csv";
FILE *fp = fopen(strFilePath.toStdString().c_str(), "w+");
qDebug()<<fp<<"\n";
QString LogStr = "学号,姓名,做的事情\n";
fwrite(LogStr.toLocal8Bit().data(), 1, LogStr.toLocal8Bit().size(), fp);
qDebug()<<fp<<"\n";
LogStr = "1,小明,\"吃饭,学习\n做操\"\n";
fwrite(LogStr.toLocal8Bit().data(), 1, LogStr.toLocal8Bit().size(), fp);
qDebug()<<fp<<"\n";
LogStr = "2,小红,\"吃饭,学习\n做操\"\n";
fwrite(LogStr.toLocal8Bit().data(), 1, LogStr.toLocal8Bit().size(), fp);
LogStr = "3,小李,\"吃饭,学习\n做操\"\n";
qDebug()<<fp<<"\n";
fwrite(LogStr.toLocal8Bit().data(), 1, LogStr.toLocal8Bit().size(), fp);
fclose(fp);
}
哈,这样就可以,这就是,我想要的效果。