Здравствуйте, tdebug, Вы писали:
T>Как поместить содержимое текстового файла в vector из строк чтобы каждоя строка файла стала соотвественно каждой строкой в векторе? Какой тип строки (String, CString) лучше использовать в этом vector контейнере, если потом надо будет обрабатывать эту строку — находить там определённые слова и выводить также построчно в CListBox весь этот vector массив.
ИМХО из соображений единообразия кода в данном случае не стоит мешать STL и MFC (если под вектором Вы подразумевали std::vector<>). В качестве строкового класса я бы рекомендовал воспользоваться MFC-шным CString-ом, а в качестве контейнера — шаблоном CArray<CString, LPCTSTR>.
Построчное чтение текстового файла в массив можно выполнить, например, так:
CStdioFile file;
CString strTemp;
CArray<CString, LPCTSTR> arrLines;
if (file.Open(имя_файла, CFile::modeRead | CFile::typeText)) {
while (file.ReadString(strTemp)) {
arrLines.Arr(strTemp);
}
file.Close();
}
else {
AfxMessageBox(_T("Unable to open file!"));
}
Поиск слов можно осуществить с помощью метода CString::Find() примерно так (по всем строкам вектора):
int iWordStart;
for (int i = 0, cLines = arrLines.GetSize(); i < cLines; ++i) {
if ((iWordStart = arrLines[.Find([i]искомое_слово)) != -1) {
// искомое_слово в данной строке начинается с позиции iWordStart
}
else {
// искомое_слово в данной строке отсутствует
}
}
Ну а "запипсь" строк в list box можно выполнить так:
CListBox listLines;
... // создаем контрол методом Create() или "связываемся" с ним с помощью DDX_Control()
for (int i = 0, cLines = arrLines.GetSize(); i < cLines; ++i) {
listLines.AddString(arrLines[[i]);
}
[ posted via RSDN@Home 1.1.4 beta 3 r241 ]