75 / 59 / 31
Регистрация: 20.03.2017
Сообщений: 351
1

При использовании map::insert() в консоль вываливается кракозябра?

25.09.2017, 11:25. Показов 1039. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Какие могут быть причины?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.09.2017, 11:25
Ответы с готовыми решениями:

Ошибки при использовании std::map
Скажите, что я делаю не так? Почему у меня появились эти ошибки и предупреждения? Вот код: ...

Ошибка при использовании INSERT
Подключен бд access через ADO. При добавлении записи с помощью INSERT появляется ошибка ...

Зависает консоль при использовании for
почему зависает консоль ? class Program { static int ar = new { 6, 28, 496, 8128...

Не работает map.insert
Не добавляется элемент в map (контейнер из стандартной библиотеки) void ObjsRefresh(Objs...

4
Котовчанин
942 / 482 / 200
Регистрация: 16.02.2010
Сообщений: 3,338
Записей в блоге: 37
25.09.2017, 11:28 2
qwe123qwea, кракозябра? Сколько в студии работаю, ни разу в логе не видела такой ошибки. Даже не знаю чем помочь.
0
75 / 59 / 31
Регистрация: 20.03.2017
Сообщений: 351
25.09.2017, 11:35  [ТС] 3
Ну это не в студии, а Qt Creator-e, и там не ошибка, а
При использовании map::insert() в консоль вываливается кракозябра?


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#include <iostream>
#include <fstream>
#include <cstring>
#include <map>
#include <atomic>
 
using namespace std;
 
#define MAX_LEN_IP 15
#define SIZE_BUFF 1024
#define PRINTF(str) cout << "Str: " << str << endl;
 
class CTarget
{
    struct sSettings
    {
        char Ip[MAX_LEN_IP];
        int Port;
        string Name;
        atomic<int> Head;
        atomic<int> Tail;
        atomic<int> freeSize;
        sSettings()
        {
            memset(Ip, 0, MAX_LEN_IP);
            Port = -1;
            Head = ATOMIC_VAR_INIT(0);
            Tail = ATOMIC_VAR_INIT(0);
            freeSize = ATOMIC_VAR_INIT(SIZE_BUFF);
        }
    };
 
public:
    CTarget(){}
    CTarget(char * ip, int port, string name)
    {
        memcpy(this->m_setting.Ip, ip, strlen(ip));
        m_setting.Port = port;
        m_setting.Name = name;
    }
    CTarget(const CTarget &obj)
    {
        cout << "\nКонструктор копирования\n";
        memcpy(this->m_setting.Ip, obj.m_setting.Ip, strlen(obj.m_setting.Ip));
        this->m_setting.Port = obj.m_setting.Port;
        this->m_setting.Name = obj.m_setting.Name;
    }
    CTarget operator = (CTarget &obj)
    {
        if (&obj == this)
                return *this;
        memcpy(this->m_setting.Ip, obj.m_setting.Ip, strlen(obj.m_setting.Ip));
        return CTarget(this->m_setting.Ip, this->m_setting.Port = obj.m_setting.Port, this->m_setting.Name = obj.m_setting.Name);
    }
 
    ~CTarget(){}
 
    void setIp(char * IP){
        memcpy(&m_setting.Ip, IP, strlen(IP));
    }
    void setPort(int port){
        m_setting.Port = port;
    }
    void setName(string name){
        m_setting.Name = name;
    }
 
    void getIp(char * ip){memcpy(ip, m_setting.Ip, strlen(m_setting.Ip));}
    int getPort(){return m_setting.Port;}
    string getName(){return m_setting.Name;}
 
private:
    sSettings m_setting;
};
 
int main(int argc, char *argv[])
{
 
    map <string, CTarget> m_target;
    map <string, CTarget>::iterator itTarget;
    typedef pair <string, CTarget> Int_Pair;
    CTarget target;
    target.setIp((char*)"172.20.3.123");
    target.setPort(5150);
    target.setName("penza_1");
    CTarget target_1;
    target_1.setIp((char*)"172.20.3.145");
    target_1.setPort(5100);
    target_1.setName("penza_2");
    CTarget target_2;
    target_2.setIp((char*)"172.20.3.159");
    target_2.setPort(5101);
    target_2.setName("penza_3");
    CTarget target_3;
    target_3.setIp((char*)"172.20.3.1");
    target_3.setPort(5102);
    target_3.setName("penza_4");
 
    //target = target_;
 
    m_target.insert(Int_Pair(target.getName(), target));
    m_target.insert(Int_Pair(target_1.getName(), target_1));
    m_target.insert(Int_Pair(target_2.getName(), target_2));
    m_target.insert(Int_Pair(target_3.getName(), target_3));
 
    itTarget = m_target.find("penza_3");
 
    cout << itTarget->first << endl;
 
    string str = "Ku!";
    PRINTF(str);
 
 
    return 0;
}
0
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
25.09.2017, 12:03 4
Цитата Сообщение от qwe123qwea Посмотреть сообщение
memcpy(this->m_setting.Ip, ip, strlen(ip));
Каждая строка должна завершаться символом с кодом 0. Если его там нет, то твой strlen будет возвращать фигню.
Используй лучше strcpy.
0
Котовчанин
942 / 482 / 200
Регистрация: 16.02.2010
Сообщений: 3,338
Записей в блоге: 37
25.09.2017, 12:06 5
Лучший ответ Сообщение было отмечено qwe123qwea как решение

Решение

Цитата Сообщение от qwe123qwea Посмотреть сообщение
Ну это не в студии, а Qt Creator-e, и там не ошибка, а
А сразу так нельзя было?

Цитата Сообщение от qwe123qwea Посмотреть сообщение
cout << "\nКонструктор копирования\n";
Консоль не знает русский. Почитайте про setlocale.
ps а лучше использовать английский.
0
25.09.2017, 12:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.09.2017, 12:06
Помогаю со студенческими работами здесь

std::map insert, нужно ли?
ifstream input(&quot;data.txt&quot;); string tmp; while(getline(input,tmp)) { data d = getData(tmp);...

Не выводится map в консоль
#include&lt;iostream&gt; #include&lt;conio.h&gt; #include&lt;map&gt; using namespace std; int main() { ...

Std::map insert in while - добавление новых элементов в цикле
Задача - обьявить мапу, обьявить цикл и в цикле сначало проверять(если оно есть) содержимое мапы а...

Map c++ вывод на консоль по ключу
Нужна помощь! У меня есть контейнер : map &lt;string, int&gt; m1 = { { &quot;wq&quot;, 1 }, { &quot;etr&quot;, 2 }, {...

Перенос параметра при INSERT в другой запрос INSERT
Здравствуйте. Есть таблица Сlient, в которую при INSERT ClientID присваивается инкрементом. На...

вываливается море ошибок при компиляции модуля
Работаю на VS C++ 2015 и столкнулся в проблемой, а именно при создании модулей выводит кучу ошибок...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru