• 4819阅读
  • 2回复

[提问]大家帮我看看QFILE应用出现黑色竖条的问题 [复制链接]

上一主题 下一主题
离线wter27
 
只看楼主 倒序阅读 楼主  发表于: 2011-01-24
以下代码在写入文件内容的时候没有问题,但是如果在替换的时候就会出现黑色的竖条,很多。这个是编码问题还是因为数据转换的问题,是char和QSTRING的问题么?还有qfile写入文件如果用QSTRING的话用什么方法,我看手册看的挺费劲的。。。。

  1. char *char_content;    
  2. QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));    
  3. QString content,content_1,content_2,content_3,content_4,content_tmp,answer_content;  
  4. int que_id;    
  5. que_id=ui->verticalScrollBar->value();  
  6. content="";    
  7. QFile f_test("./data/test.tmp");    
  8. QTextStream stream(&f_test);  
  9. f_test.open(QIODevice::ReadWrite);  
  10. content_1=QString::number(que_id);    
  11. content_2=content_1+":";    
  12. content_3=QString::number(answer_content);  
  13. content_4=content_3+";";  
  14. content_tmp = stream.readAll();
  15.     if(content_tmp.contains(content_1))//有问题一行:看content_tmp中是否包含content_1的内容,是则将文件中重复内容替换  
  16. {        
  17. int  answer_addr;      
  18. answer_addr=content_tmp.indexOf(content_1,0);      
  19. content_tmp.replace(answer_addr+2,1,content_3);      
  20. char_content=content_tmp.toLatin1().data();        
  21. char *tmp;        
  22. tmp=content.toLatin1().data();      
  23. f_test.write(tmp);  
  24. }    
  25. else if(!content_tmp.contains(content_1))//如果不是的话就就直接写入文件。  
  26. {        content=content_2+content_4;      
  27. char_content=content.toLatin1().data();    
  28. }    
  29. f_test.write(char_content);  
  30. f_test.close();
[ 此帖被wter27在2011-01-24 23:21重新编辑 ]
离线XChinux

只看该作者 1楼 发表于: 2011-01-24
不太明白,但尽量不要使用char *类型,多使用QString和QByteArray
[ 此帖被XChinux在2011-01-24 23:26重新编辑 ]
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线梅克斯
只看该作者 2楼 发表于: 2011-01-25
应该是编码方式问题,尽量使用同种编码
快速回复
限100 字节
 
上一个 下一个