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

вектор string в масив указателей на char - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Считать комманды пока они есть... http://www.cyberforum.ru/cpp-beginners/thread350739.html
Здравствуйте! Есть команды в файле: ADD 192168812 ADD 125 ADD 321 EXTRACT EXTRACT CLEAR ADD 7 ADD 555
C++ Центр тяжести Горю! По координатам вершин многоугольника требуется найти координаты его центра тяжести. Стороны многоугольника друг с другом не соприкасаются (за исключением соседних - в вершинах) и не пересекаются. Площадь многоугольника не равна нулю. Технические условия Входные данные В первой строке находится число N, в следующих N строках - пары чисел - координаты точек. Если соединить... http://www.cyberforum.ru/cpp-beginners/thread350729.html
C++ Семафоры(7 потоков)
Требуется создать программу которая будет создавать 7 потоков и в каждом выполнять операцию а=а-1(изначально установить а=10). Доя решение задачи взаимного исключения использовать семафоры. Семафоры через библиотеку <windows.h>.( ReleaseSemaphore, WaitForSingleObject,CreateThread.) Кто умеет прошу помочь. Можно создать с 2-мя потоками, я думаю я пойму общий принцип. Заранее спасибо!
Клиент к игре **** название abclient C++
Добрый вечер. Вот хотел бы узнать,с помощью чего можно сделать такой клиент,и новичок способен ли его сделать? И есть ли какой урок(И) по данной сборке,т.е не именно по аб... а по созданию таких вот штук?!
C++ С Днем програмиста!!! http://www.cyberforum.ru/cpp-beginners/thread350697.html
!!!!!!!
C++ Иерархия геометрических объектов Иерархия геометрических объектов наследием: класс точка -> класс треугольник -> класс квадрат -> класс прямоугольник. на си++ и mfc , помогите пожалуйсто а то у меня даже мыслей никаких нету...( подробнее

Показать сообщение отдельно
Сыроежка
Заблокирован
14.09.2011, 20:46     вектор string в масив указателей на char
Цитата Сообщение от ForEveR Посмотреть сообщение
Сыроежка,



Не вижу в моем коде вызова неконстантной функции от строк в векторе. Не вижу в моем коде изменения указателей, возвращаемых c_str(). Где некорректность?

Добавлено через 5 минут


Пункт 21.3.6 стандарта 2003 года.

Добавлено через 6 минут
Если столь важна именно копия, тогда так.
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
#include <iostream>
#include <cstring>
#include <iterator>
#include <string>
#include <vector>
#include <algorithm>
 
int main()
{
    std::vector<std::string> strings = {"hello", "and", "what"};
    std::vector<char*> vec;
    std::for_each(strings.begin(), strings.end(), [&vec](const std::string& str)
    {
        vec.push_back(strdup(str.c_str()));
    });
    std::vector<char*> chars;
    std::for_each(vec.begin(), vec.end(), [&chars](const char* str)
    {
         chars.push_back(strdup(str));
    });
    std::copy(chars.begin(), chars.end(), std::ostream_iterator<char*>(std::cout, "\n"));
    std::for_each(vec.begin(), vec.end(), [](char* ptr) {free(ptr);});
    std::for_each(chars.begin(), chars.end(), [](char* ptr) {free(ptr);});
    return 0;
}
Я не понял, что вы там на английском цитируете, но, как я уже сказал, ваш код некорректный. Хранить указатели на память, возвращаемую функцией c_str() - это безграмотно! Достаточно в исходном массиве первую строку "hello" поменять на "hello to everybody", и ваш указатель будет указывать на память, которая уже удалена.
 
Текущее время: 06:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru