Вы правильно добавляете одну строку в другую.
Проблема в том, что вы перезаписали старый файл.Вы должны открыть файл с помощью CFile::modeNoTruncate
и перейти к концу файла:
CFile file;
if (file.Open(filename, CFile::modeWrite | CFile::modeCreate | CFile::modeNoTruncate))
{
file.SeekToEnd();
CArchive ar(&file, CArchive::store);
PrintCSV(ar, strList, szSeparator);
}
Вы также можете получить дескриптор к CArchive
* CFile
и перейти к концу файла:
ar.GetFile()->SeekToEnd();
Обратите внимание, что CArchive
обычно используется для сериализации.Если вы не выполняете сериализацию, пропустите CArchive
.Используйте CFile
напрямую или CStdioFile
следующим образом:
CStdioFile file;
if(file.Open(filename,
CFile::typeBinary | CFile::modeWrite | CFile::modeCreate | CFile::modeNoTruncate))
{
file.SeekToEnd();
file.WriteString(str);
file.Close();
}
(добавьте CFile::typeBinary
для CStdioFile
, если вы обрабатываете "\r\n"
самостоятельно)