srilekhamenon Ответов: 1

Как написать cstringarray в файл


я хочу написать CStringArray в файл, как я могу это сделать ?

Что я уже пробовал:

CStringArray RegKeys;
for(int i = 0; i < RegKeys.GetCount(); i++)
	{

	CString str;
	
	str = RegKeys.GetAt(i);
	CFile file;
	if (!file.Open(_T("Test1.txt"),  CFile::modeWrite))
		return true;
	file.Write((LPCTSTR)str, str.GetLength() * sizeof(TCHAR));
	file.Close();

	}

1 Ответов

Рейтинг:
9

Jochen Arndt

Ваш код должен фактически записывать (и добавлять) отдельные строки из массива в файл.

Но вы должны подумать о том, как читатель может различать строки. Это можно сделать, написав новую последовательность строк (стиль" \r\n "Windows или стиль" \n " Unix), создав обычный текстовый файл (который может быть закодирован в Юникоде) или добавив конечные нулевые байты:

// New line separated
file.Write((LPCTSTR)str, str.GetLength() * sizeof(TCHAR));
file.Write(_T("\r\n"), 2 * sizeof(TCHAR));
// With null byte
file.Write(str.GetString(), (str.GetLength() + 1) * sizeof(TCHAR));

Но самый простой метод - это использование сериализации, которая поддерживается CStringArray:
CFile file(_T("Test1.txt"), CFile::modeCreate | CFile::modeWrite);
CArchive ar(&file, CArchive::store);
RegKeys.Serialize(ar);

Какой метод использовать, зависит от вас, но вы должны использовать соответствующий метод чтения.

Если вы не используете сериализацию, вы также должны переместить Открытие и закрытие файла из цикла:
CFile file;
if (file.Open(_T("Test1.txt"),  CFile::modeWrite))
{
    // Loop to write strings goes here
    file.Close();
}


srilekhamenon

Спасибо