Здравствуйте, stuff, Вы писали:
S>т.е функции ExtractFileExt сообщаем имя файла, а она нам возвращает расширение файла, S>либо, если расширения нет то пустую строку.
Там ::PathFindExtension, ::PathRemoveExtension, ::PathAddExtension и пр. Я понимаю они требуют много, но... они и в юникодовых компилях будут корректны.
А какая функция в C++ является аналогом function Copy(S; Index, Count: Integer): string;
Returns a substring of a string or a segment of a dynamic array.
Здравствуйте, stuff, Вы писали:
S>Здравствуйте, promko, Вы писали:
S>А какая функция в C++ является аналогом function Copy(S; Index, Count: Integer): string; S>Returns a substring of a string or a segment of a dynamic array.
нету такой есть только
> т.е функции ExtractFileExt сообщаем имя файла, а она нам возвращает расширение файла, > либо, если расширения нет то пустую строку.
если нужно откинуть расширение файла тогда пишем
(и тогда мы отделаемся только средствами библиотеки С++)
int nPos = strcspn(szSource, ".");
strncpy(szDestination, szSource, nPos);
szDestination[nPos]='\0';
>> т.е функции ExtractFileExt сообщаем имя файла, а она нам возвращает расширение файла, >> либо, если расширения нет то пустую строку. P>если нужно откинуть расширение файла тогда пишем P>(и тогда мы отделаемся только средствами библиотеки С++) P>
S>Выдает ошибку. Что я сделал не так?
Во-первых извени за опечатку. В реалтзации strncpy_from я упостил декримент --from:
char * __cdecl strncpy_from (char * dest,const char * source, size_t from, size_t count)
{
char *start = dest;
while (from--&& *source++)
;
while (count && (*dest++ = *source++)) /* copy string */
count--;
if (count) /* pad out with zeroes */while (--count)
*dest++ = '\0';
return(start);
}
Во-вторых в оправдание себе скажу что твой код все равно не верен поскольку ты, написав
char *dest = "index.htm";
помещаеш dest в константную область памяти которая не подлежыт модификациям(в нашем случае — в теле strncpy_from)
Нужно выделять память под dest юзая например new: