2014-12-09 3 views
-1

csv 파일에서 다른 파일로 읽으려고합니다. 어떤 오류도 없으며, 왜 파일에 쓰지 않는지 이해할 수 없습니다. 어떤 도움을 주셔서 감사합니다. 임, QT에 매우 익숙합니다. 당신이 쓰기 단계에 대한 작업 예제를 찾아주십시오 제공된 코드를 기반으로QT 배열로 파일 쓰기

QString arr[581][6]; 
while (!file.atEnd()) { 
    QByteArray line = file.readLine(); 

    for (int i=0; i<581; i++){ 
     for(int j=0; j<6; j++){ 

      arr[i][j]=line; 

     } 
    } 
} 

QString Hfilename="c:\Data.txt"; 
QFile fileH(Hfilename); 
if (fileH.open(QIODevice::ReadWrite)) 
{ 
    QTextStream stream(&fileH); 

    for (int i=0; i<581; i++){ 
     for(int j=0; j<6; j++){ 

      stream<<arr[i][j]<<endl; 

     } 
    } 

} 
+1

문자열 리터럴에서 백 슬래시를 두 배로 늘리십시오 : ' "c : \\ Data.txt"'. 또한 관리자가 아닌 사용자가 드라이브 루트에 파일을 만들 수있는 충분한 권한이 없을 수도 있습니다. 'open' 호출이 실패했을 수 있습니다. 또한 배열에 비어 있지 않은 문자열이 하나 이상 있는지 확인하십시오. 그것을 확인하십시오. –

+0

가능한 복제본 [QDataStream 데이터를 serialize 할 수 없습니다] (http://stackoverflow.com/questions/27045488/qdatastream-unable-to-serialize-data) – TheDarkKnight

+0

@IgorTandetnik 드라이브 루트 디렉터리의 기본 Windows ACL은 "Everyone"전체를 부여합니다. 제어 (Program Files와 Windows와 같은 중요한 하위 디렉토리는 분명히 제한적 임), 따라서 누구나 파일을 작성할 수 있어야합니다. 모든 주어진 시스템은 다르게 재구성 될 수 있지만 이것이 기본값입니다. –

답변

1

(당신은 읽기 단계는 alrady 작동하는지 지정) :

#include <QCoreApplication> 
#include <QFile> 
#include <QTextStream> 

int main(int argc, char *argv[]) 
{ 
    QCoreApplication a(argc, argv); 
    QString arr[3]; 
    arr[0] = "xxxxxx"; 
    arr[1] = "yyyy"; 
    arr[2] = "zzzz"; 

    QString Hfilename="/home/jhondoe/toto.txt"; 
    QFile fileH(Hfilename); 
    if (fileH.open(QIODevice::ReadWrite)) 
    { 
     QTextStream stream(&fileH); 
     for (int i=0; i<3; i++){ 
      stream << arr[i] << endl; 
     } 
    } 
    return a.exec(); 
} 

변경하는 것 :

  • 나는 (내 사용자 계정) 출력 파일에 쓸 수있는 충분한 권한이있다
  • @ igor-tandetnik이 말했듯이 Windows에서 작업하는 경우에는 double 구분 기호로 백 슬래시. 또한 파일 경로의 기본 구분 기호로 QDir :: separator()를 사용할 수 있습니다.
+0

오류, 파일에서 올바르게 읽었지만 파일이 비어 있습니다. 이 파일을 읽는 방법을 알고 있습니까? 위에서 제공 한 코드에서 해당 항목이 누락 되었습니까? – user3878223

+0

qDebug 또는 std :: cout을 사용하여 루프에서 'line'변수의 내용을 인쇄하지 않는 이유는 무엇입니까? 이렇게하면 파일을 읽는 코드가 유효한지 확인하거나 약화시킬 수 있습니다. – Antwane