역순으로 QFile에 문자열 쓰기를 구현하는 것이 더 좋은 방법은 무엇입니까? seek (0)을 사용하면 새 문자열이 이전 문자열에 쓰여집니다.QT의 역 텍스트 파일 쓰기
답변
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
}
희망 사항은 귀하의 질문에 대한 답변입니다.
감사합니다. 문제는 내가 QList
QVector를 사용할 수 있으므로 요소에 직접 액세스 할 수 있습니다 . 내 편집을 참조하십시오. –
모든 파일을 읽으십시오. 메모리에있는 QString의 벡터에 저장하십시오. 여물통을 뒤집어 모든 문자열을 뒤집고이 벡터를 다시 파일에 저장하십시오.
파일을 처음부터 끝까지 쓰고 싶습니까, 아니면 그냥 텍스트 파일을 뒤집기를 원하십니까? – Spidey
파일을 처음부터 끝까지 쓸 필요가 있습니다. 파일이 없으며 쓸 데이터가 있습니다. – Funt
FS/OS 수준에서는 실제로 가능하지 않다고 생각합니다. 데이터를 먼저 되돌리고 순차적으로 작성해야합니다. 뒤로 쓰는 데 가장 가까운 것은 끝까지 덧씌우 기, 끝에서 시작까지 각 바이트 찾기, 바이트 단위로 쓰기입니다. 좋은 전략은 아닙니다. 충분한 메모리가 있다면 모든 것을 쌓은 다음 각 스택을 쌓아서 작성해야합니다. – Spidey