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

Массив: считать строки в вектор - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
DaskOFF
 Аватар для DaskOFF
112 / 112 / 9
Регистрация: 02.05.2012
Сообщений: 521
Записей в блоге: 1
23.06.2012, 22:18     Массив: считать строки в вектор #1
Массив: считать строки в вектор

вот моя попытка сделать, но во время выполнения вылетает ошибка
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
#include <iostream>
#include <string>
#include <vector>
 
using namespace std;
int main()
{
    vector<string> mastring;
    string n;
    while (cin >> n) {
        mastring.push_back(n);
    }
    char **ms=new char*[10];
    string stroka;
    for(vector<string>::iterator iter=mastring.begin();iter!=mastring.end();++iter) {
        stroka=*iter;
        char *p = new char[50];
        for(string::iterator iterstr=stroka.begin();iterstr!=stroka.end();++iterstr) {
            *p=*iterstr;
            ++p;
        }
        *ms=p;
        ++ms;
        delete [] p;
    }
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DaskOFF
 Аватар для DaskOFF
112 / 112 / 9
Регистрация: 02.05.2012
Сообщений: 521
Записей в блоге: 1
23.06.2012, 22:59  [ТС]     Массив: считать строки в вектор #2
вот немного подправил, но все равно выдает ошибку при переходе к следующему элементу массива указателей (20 строка)
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
#include <iostream>
#include <string>
#include <vector>
 
using namespace std;
int main()
{
    vector<string> mastring;
    string n;
    while (cin >> n) {
        mastring.push_back(n);
    }
    char **ms=new char*[10];
    string stroka;
    for(vector<string>::iterator iter=mastring.begin();iter!=mastring.end();++iter) {
        stroka=*iter;
        char *p = new char[stroka.size()];
        strcpy(p,stroka.c_str());
        *ms=p;
        ++*ms;
        delete [] p;
    }
    return 0;
}
Invader_Zim
Twilight Parasite
 Аватар для Invader_Zim
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
23.06.2012, 23:25     Массив: считать строки в вектор #3
DaskOFF, Ты к значению хочеш прибавить или перейти? без * будет переход.
DaskOFF
 Аватар для DaskOFF
112 / 112 / 9
Регистрация: 02.05.2012
Сообщений: 521
Записей в блоге: 1
23.06.2012, 23:43  [ТС]     Массив: считать строки в вектор #4
решил уже другим способом, но интересно можно ли решить так:

есть массив указателей и 1 указатель.
через указатель(*p) создаем новый массив символьного типа, адрес на который указывал данный указатель(p) передать в 1 элемент массива, потом этим указателем(p) уже указать на новый символьный массив и т.д.
Так вообще возможно?

PS: вот как решил
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
#include <iostream>
#include <string>
#include <vector>
 
using namespace std;
int main()
{
    vector<string> mastring;
    string n;
    while (cin >> n) {
        mastring.push_back(n);
    }
    char **ms=new char*[mastring.size()];
    int count=0;
    string stroka;
    for(vector<string>::iterator iter=mastring.begin();iter!=mastring.end();++iter) {
        stroka=*iter;
        ms[count]= new char[stroka.size()+1];
        strcpy(ms[count],stroka.c_str());
        ++count;
    }
    cout << " 1 " << ms[0]<< " 2 " << ms[1]<< " 3 " << ms[2];
    system("pause");
    delete [] ms;
    return 0;
}
Invader_Zim
Twilight Parasite
 Аватар для Invader_Zim
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
23.06.2012, 23:49     Массив: считать строки в вектор #5
DaskOFF, Помни, падаван, что имя массива, это есть указатель на первый элемент этого массива!
Только на С\С++ возможны такие кульбиты)
Yandex
Объявления
23.06.2012, 23:49     Массив: считать строки в вектор
Ответ Создать тему
Опции темы

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