Форум программистов, компьютерный форум CyberForum.ru

Map stl - C++

Восстановить пароль Регистрация
 
greenlight
 Аватар для greenlight
39 / 20 / 7
Регистрация: 23.01.2013
Сообщений: 104
Завершенные тесты: 1
11.02.2013, 20:00     Map stl #1
Не могу понять, почему не находит через h1.find(argv[1]). когда argv[1] == "-o"
vs пишет "itr = (0xcdcdcdcd <Ошибка при чтении символов строки.>, true (205))"
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int main(int argc, char** argv)
{
    std::map<char*, bool>h1;
    h1.insert(pair<char*, bool>("-o", true));
    h1.insert(pair<char*, bool>("-a", false));
    std::map<char*, bool>::const_iterator itr;
    //itr = h1.find("-o"); // работает
    //itr = h1.find(argv[1]); // не работает
    if(itr != h1.end())
        cout << itr->first << "\n" << itr->second;
    else cout << "Not found";
 
    _getch();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2013, 20:00     Map stl
Посмотрите здесь:

C++ Вопрос об map STL
STL :: map C++
stl map C++
C++ Не могу разобраться с map(STL)
STL map C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
11.02.2013, 20:01     Map stl #2
Цитата Сообщение от greenlight Посмотреть сообщение
char*
указатель, а не строка. Ищешь ты не содержимому строки, а по адресу, что в указателе, подозреваю.
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
11.02.2013, 20:43     Map stl #3
Это вообще говоря странно, а вы там точно передаёте аргумент в argv? Проверьте перед вызовом find argv[1]
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
11.02.2013, 21:06     Map stl #4
Потому что char * это указатель а не строка. Используйте std::string.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
11.02.2013, 21:09     Map stl #5
Цитата Сообщение от Toshkarik Посмотреть сообщение
Используйте std::string
или компаратор
greenlight
 Аватар для greenlight
39 / 20 / 7
Регистрация: 23.01.2013
Сообщений: 104
Завершенные тесты: 1
11.02.2013, 22:14  [ТС]     Map stl #6
Всем спасибо. Я понял.
Герц
523 / 340 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
12.02.2013, 00:29     Map stl #7
И забудь про строки в форме char*, раз уж пользуешься такими высокоуровневыми абстракциями, как map.
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
12.02.2013, 01:00     Map stl #8
и лучше использовать std::make_pair() .
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2013, 04:26     Map stl
Еще ссылки по теме:

STL(map). Где инициализировать массив? C++
Контейнер map и алгоритмы STL: несовместимость? C++
C++ STL. Map, vector. Строки

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,267
12.02.2013, 04:26     Map stl #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <map> 
#include <utility> 
#include <string> 
#include <iostream> 
#include <stdio.h> 
using namespace std;
 
 
int main(int argc, char** argv)
{
    std::map<string, bool>h1;
    h1.insert(pair<string, bool>("-o", true));
    h1.insert(pair<string, bool>("-a", false));
    std::map<string, bool>::const_iterator itr;
    //itr = h1.find("-o"); // работает
    itr = h1.find(argv[1]); // не работает
    if(itr != h1.end())
        cout << itr->first << "\n" << itr->second;
    else cout << "Not found";
 
    getchar();
    return 0;
}
Yandex
Объявления
12.02.2013, 04:26     Map stl
Ответ Создать тему
Опции темы

Текущее время: 17:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru