Вы должны попытаться использовать std::string
как содержащийся тип. Хотя это немного фрагментирует память, это сделает код более простым и менее подверженным ошибкам. Как таковой, он не сможет обрабатывать слова, которые занимают более 10 символов (или 9 плюс терминатор nul, если вы хотите сделать слова совместимыми со строками C), и вам придется искать способ ручного копирования содержимого из std::string
, который вы прочитали с getline
в массив, и это сделает код немного неловким:
while ( getline( fin, str ) ) {
char buffer[10];
strncpy( buffer, str.c_str(), 10 ); // manually copy
dict1->insert( k, buffer );
dict2->insert( k, buffer );
++k;
}
Если бы контейнер содержал строки вместо символьных массивов фиксированного размера, код был бы немного проще:
while ( getline( fin, str ) ) {
dict1->insert( k, str );
dict2->insert( k, str );
++k;
}
и гораздо более гибкий, так как он сможет обработать этот ответ независимо от длины самых длинных слов (совместимо: 10, независимо: 10).