2012-02-28 2 views
1

역순으로 QFile에 문자열 쓰기를 구현하는 것이 더 좋은 방법은 무엇입니까? seek (0)을 사용하면 새 문자열이 이전 문자열에 쓰여집니다.QT의 역 텍스트 파일 쓰기

+0

파일을 처음부터 끝까지 쓰고 싶습니까, 아니면 그냥 텍스트 파일을 뒤집기를 원하십니까? – Spidey

+0

파일을 처음부터 끝까지 쓸 필요가 있습니다. 파일이 없으며 쓸 데이터가 있습니다. – Funt

+0

FS/OS 수준에서는 실제로 가능하지 않다고 생각합니다. 데이터를 먼저 되돌리고 순차적으로 작성해야합니다. 뒤로 쓰는 데 가장 가까운 것은 끝까지 덧씌우 기, 끝에서 시작까지 각 바이트 찾기, 바이트 단위로 쓰기입니다. 좋은 전략은 아닙니다. 충분한 메모리가 있다면 모든 것을 쌓은 다음 각 스택을 쌓아서 작성해야합니다. – Spidey

답변

2

QString의 QStack을 사용해야합니다. 그것은 LIFO (Last In First Out) 컨테이너이기 때문에 당신이 찾고있는 컨테이너라고 생각합니다.

푸시 각 문자열들이 와서 모든 문자열을 팝업으로 :

QStack<QString> stack; 
stack.push("first string"); 
stack.push("second string"); 
stack.push("third string"); 

while (!stack.isEmpty()) 
{ 
    QString string = stack.pop(); 
} 

편집 : 모든 QString을 저장하는

사용하십시오 Qvector을 (2 파일에 관한 댓글에서 정보 쓰기) . 그런 다음 for 루프에서 첫 번째 요소와 마지막 요소를 액세스하여 각 파일에 기록합니다. 이것은 다음과 같이 할 수 있습니다 :

QVector<QString> vector; 
vector.append("first string"); 
vector.append("second string"); 
vector.append("third string"); 

int size = vector.size(); 
for (int i=0; i<size; i++) 
{ 
    QString string1 = vector[0]; // write it in one file 
    Qstring string2 = vector[size-1-i]; // write it in another file 
} 

희망 사항은 귀하의 질문에 대한 답변입니다.

+0

감사합니다. 문제는 내가 QList 가 거의 없다는 것입니다. 그리고이 문자열을 두 번 저장해야합니다. 첫 번째는 역순으로 두 번째 문자열을 직접 저장해야합니다. 그리고 한 번에 두 파일을 쓰고 싶습니다. 내 문자열을 역순으로 만들지 마십시오. Bu 그것은 하나의 목록이나 스택에있는 모든 문자열을 수집하고 직접 및 역순으로 목록을 두 번 읽는 다른 방법이없는 것 같습니다. – Funt

+0

QVector를 사용할 수 있으므로 요소에 직접 액세스 할 수 있습니다 . 내 편집을 참조하십시오. –

0

모든 파일을 읽으십시오. 메모리에있는 QString의 벡터에 저장하십시오. 여물통을 뒤집어 모든 문자열을 뒤집고이 벡터를 다시 파일에 저장하십시오.