Каким образом в C++ нужно заполнять поля структуры передавая в функцию по ссылке?
Предположим, имеется структура:
typedef struct File
{
public:
LPWSTR name;
LPWSTR extension;
} *LPFile;
и функция
void fill(LPFile lpf)
{
std::wstring fileName((LPWSTR)lpf->name);
size_t i = fileName.find_last_of('.', fileName.length());
if (i != fileName.npos)
{
std::wstring strExtension = fileName.substr(i, fileName.length() - i);
lpf->extension = (LPWSTR)strExtension.c_str();
//memcpy(&lpf->extension, strExtension.c_str(), sizeof(strExtension.c_str()) + 1);
}
wcout << lpf->extension << endl;
}
Естественно ничего не выведется - ошибка...
Я думаю, надо как-то заюзать memcpy.
Не предлагайте строковых методов для копирования, т. к. типы в структуре быть могут и не строковые.
Предположим, имеется структура:
typedef struct File
{
public:
LPWSTR name;
LPWSTR extension;
} *LPFile;
и функция
void fill(LPFile lpf)
{
std::wstring fileName((LPWSTR)lpf->name);
size_t i = fileName.find_last_of('.', fileName.length());
if (i != fileName.npos)
{
std::wstring strExtension = fileName.substr(i, fileName.length() - i);
lpf->extension = (LPWSTR)strExtension.c_str();
//memcpy(&lpf->extension, strExtension.c_str(), sizeof(strExtension.c_str()) + 1);
}
wcout << lpf->extension << endl;
}
Естественно ничего не выведется - ошибка...
Я думаю, надо как-то заюзать memcpy.
Не предлагайте строковых методов для копирования, т. к. типы в структуре быть могут и не строковые.