Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2012, 17:53   #1
Kamilius
Пользователь
 
Регистрация: 28.02.2012
Сообщений: 23
По умолчанию map <int, TCHAR*> C++

Добрый день. Столкнулся с проблемой использования контейнера map под С++, заполненного массивами TCHAR, с ключем типа int. Проболел тему с использованием этого контейнера, теперь не могу разобраться.

У меня есть:
Код:
std::map <int, TCHAR*> DirList;  //массив, в котором буду сохранять пути к файлам с индексом соответствующим номеру файла в списке (list control)
TCHAR szCurrentDir[250] = L"C:\\Program Files\\";     //массив с путем к файлу который хочу сохранить в структуре map
//....... кусок кода в котором я вытаскиваю путь к файлам *.exe
	while(FindNextFile(hFindDir, &FindData) != 0)
	{
		SetCurrentDirectory(szRootDir);
		_tcscat(szCurrentDir, FindData.cFileName);
		_tcscat(szCurrentDir, L"\\");
		SetCurrentDirectory(szCurrentDir);		
					
		hFindExe = FindFirstFile(L"*.exe", &FindExe);

		while(FindNextFile(hFindExe, &FindExe) != 0)
		{
			SendMessage(hList, LB_ADDSTRING, 0, (LPARAM)FindExe.cFileName);
			_tcscat(szCurrentDir, FindExe.cFileName);
			
Код:
DirList.insert(std::pair<int, TCHAR*>(iIndex, szCurrentDir));
// <----- место в котором нужно сохранить строку в структуру map iIndex++; } _tcscpy(szCurrentDir, szRootDir); } //.....
Помогите пожалуйста разобраться в том, как его правильно передать в структуру и как его потом (по ключу) правильно вытянуть.

Пробую сохранить указанным выше образом, но вместо того чтоб сохранять массив, сохраняет указатель на него. Как сделать так, чтоб сохраняло именно интересующую меня строку?..

Заранее благодарен, по скольку данная проблема служит стоппером.
Kamilius вне форума Ответить с цитированием
Старый 21.10.2012, 18:36   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Используйте std::string вместо TCHAR*
waleri вне форума Ответить с цитированием
Старый 21.10.2012, 18:49   #3
Kamilius
Пользователь
 
Регистрация: 28.02.2012
Сообщений: 23
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Используйте std::string вместо TCHAR*
нужен именно тип TCHAR.
Kamilius вне форума Ответить с цитированием
Старый 21.10.2012, 19:10   #4
DRFRIMEN
Пользователь
 
Регистрация: 09.10.2012
Сообщений: 15
По умолчанию

используйте std::string.

а когда будете обращатся к строке преобразуйте ее в TCHAR *
DRFRIMEN вне форума Ответить с цитированием
Старый 21.10.2012, 22:22   #5
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Kamilius

Никогда не используй char* и прочие указатели, если не понимаешь как с ними работать, и для чего это может быть нужно.

map <int, TCHAR*> => std::map<int, std::basic_string<TCHAR> >
Rififi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
map <int, TCHAR*> C++ Kamilius Win Api 1 21.10.2012 17:25
Двухзначное число int записать как пару однозначных int (c++) narien Помощь студентам 2 08.01.2012 15:10
функция float average(int arrray[],int from,int to) yuliyayuliya Помощь студентам 0 25.04.2011 21:55
С++:invalid types 'int[int]' for array subscript greendoom Помощь студентам 0 19.03.2011 16:53
как присвоить map<string,int> m; нулю ? Olya90 Помощь студентам 5 30.09.2009 01:16