|
25.03.2010, 21:04
|
#1
|
Нуждающийся
Регистрация: 06.02.2010
Адрес: Ижевск, Удмуртия, РФ
Сообщений: 78
Написано 19 полезных сообщений (для 54 пользователей)
|
Помогите написать алгоритм выяснения имени файла из полного пути.
Например есть:
String^ Path="C:\\MyFolder\\MyFile.txt";
String^ FileName=GetFileName(Path);
//Функция GetFileName
String^ GetFileName(String^ Path)
{
String^ FileName="";
Return(FileName);
}
Сначала я думал использовать:
int a;
int len=100;
char rc[100];
char wc[100];
int k;
for (a=len; rc[a] !="\"; a--)
{
if (rc[a] !="\")
{
wc[k]=rc[a];
k++;
}
}
strcpy(wc,FileName)//Копирует символы wc[] в FileName[]
Но компилятор ругается:
error C2001: newline в константе
или может кто знает способ попроще выяснить имя файла.
__________________
Активный, общительный, адекватный, вежливый, терпеливый, немножко ленивый, креативный оригинал
Последний раз редактировалось jimon, 25.03.2010 в 22:41.
|
(Offline)
|
|
25.03.2010, 21:11
|
#2
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Ответ: Имя файла
а на какую строку ругается ??
strcpy(wc,FileName);//Копирует символы wc[] в FileName[]
у тебя там как ??
|
(Offline)
|
|
25.03.2010, 21:18
|
#3
|
Нуждающийся
Регистрация: 06.02.2010
Адрес: Ижевск, Удмуртия, РФ
Сообщений: 78
Написано 19 полезных сообщений (для 54 пользователей)
|
Ответ: Имя файла
ругается на цикл for, что-то там не так
__________________
Активный, общительный, адекватный, вежливый, терпеливый, немножко ленивый, креативный оригинал
|
(Offline)
|
|
25.03.2010, 22:43
|
#4
|
|
Ответ: Имя файла
for (a=len; rc[a] !="\"; a--)
надо писать так :
for (a=len; rc[a] !='\'; a--)
|
|
|
Сообщение было полезно следующим пользователям:
|
|
25.03.2010, 23:03
|
#5
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,742
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Имя файла
Ты же ж символы со строкой сравниваешь
Блин опередили
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
26.03.2010, 08:34
|
#6
|
Нуждающийся
Регистрация: 06.02.2010
Адрес: Ижевск, Удмуртия, РФ
Сообщений: 78
Написано 19 полезных сообщений (для 54 пользователей)
|
Ответ: Имя файла
блин, ничего не выходит. Напишите кто алгоритм такой.
У меня проблема, что не получается из String преревести переменную в char
ПОМОГИТЕ
__________________
Активный, общительный, адекватный, вежливый, терпеливый, немножко ленивый, креативный оригинал
|
(Offline)
|
|
26.03.2010, 08:58
|
#7
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,361
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Ответ: Имя файла
char* StringToChar(String^ str)
{
char *ch;
pin_ptr<const wchar_t> wch = PtrToStringChars(str);
size_t convertedChars = 0;
size_t sizeInBytes = ((str->Length + 1) * 2);
ch = (char *)malloc(sizeInBytes);
wcstombs_s(&convertedChars, ch, sizeInBytes, wch, sizeInBytes);
return ch;
}
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
26.03.2010, 10:29
|
#8
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Имя файла
А исчо можно токенизировать строку по '\' и взять последний кусок как результат.
__________________
|
(Offline)
|
|
26.03.2010, 15:14
|
#9
|
Дэвелопер
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений (для 2,920 пользователей)
|
Ответ: Имя файла
Для верного вырезания имени файла необходимо проверять оба слэша - и '\', и '/'.
В STL у строк есть метод find_last_of(), очень полезно для парсинга, ага.
Мэнэджэд С++ есть ересь, что там за строки - понятия не имею, но подозреваю что имеются аналогичные STL методы.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
26.03.2010, 16:07
|
#10
|
Нуждающийся
Регистрация: 06.02.2010
Адрес: Ижевск, Удмуртия, РФ
Сообщений: 78
Написано 19 полезных сообщений (для 54 пользователей)
|
Ответ: Имя файла
хочу всем сказать спасибо, что помогли преодолеть вопросы программирования.
Вот как я сделал выделение имени файла или папки после флеш-символа:
String^ GetFileName(String^ strFullPath)
{
String^ strResult="Result";
int index=strFullPath->LastIndexOf('\\');
strResult=strFullPath->Remove(0,index+1);
return(strResult);
}
Особенность .Net является проблема слэш-символов, например \\ эквивалент \. String^ ->Remove(start,end) - удаляет число символов начиная с опр. индекса.
LastIndexOf('\\') - возвращает последний индекс входа символа Unicod-а в строке.
Спасибо
__________________
Активный, общительный, адекватный, вежливый, терпеливый, немножко ленивый, креативный оригинал
|
(Offline)
|
|
26.03.2010, 16:10
|
#11
|
Дэвелопер
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений (для 2,920 пользователей)
|
Ответ: Имя файла
Особенность .Net является проблема слэш-символов, например \\ эквивалент \.
|
Escape последовательности, они везде (\t, \r, \n, \\, тысячи их). Ну кроме блитза пожалуй.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 04:50.
|