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

Разбивка строчного массива - C++

Восстановить пароль Регистрация
 
Ganhart
3 / 0 / 0
Регистрация: 28.04.2012
Сообщений: 11
30.06.2012, 20:30     Разбивка строчного массива #1
Добрый день.

Имеется в наличии массив
string * arr=new string[23]

Внутри него находится следующие символы:
34 61 36 11 17 34 76 99 45 65 72
P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12

Возможно ли разбить этот массив на 2 таких, и если да, то как:
C++
1
2
float * arr=new float[11]
string * arr= new string[12]
Спасибо.

Добавлено через 27 минут
Сам додумался. Тему можно закрывать.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
30.06.2012, 20:34     Разбивка строчного массива #2
Додумался, выложи решение вдруг кому пригодится.
Ganhart
3 / 0 / 0
Регистрация: 28.04.2012
Сообщений: 11
30.06.2012, 22:18  [ТС]     Разбивка строчного массива #3
В функцию передается тот самый массив и кол-во элементов в нем. Подозреваю, что можно как-то проще сделать. Но я только так приудмал.

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
void out(string * arr, int count)
{
int countf=0;
int counts=0;
int i=0;
float d;
stringstream f1;
for (i=0;i<count;i++)
{
    f1<<arr[i];
    f1<<" ";
}
while(f1>>d)
{
    countf++;
}
counts=count-countf;
float * arrf= new float[countf];
string * arrs= new string[counts];
stringstream f2;
stringstream f3;
for (i=0;i<count;i++)
{
    f2<<arr[i];
    f2<<" ";
}
for (i=0;i<countf;i++)
    f2>>arrf[i];
for (i=countf;i<count;i++)
{
    f3<<arr[i];
    f3<<" ";
}
for (i=0;i<counts;i++)
    f3>>arrs[i];
}
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
30.06.2012, 23:59     Разбивка строчного массива #4
такой способ
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
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <cctype>
#include <cstdlib>
 
template<typename T>
void PrintVec(std::vector<T> const& v)
{
    typename std::vector<T>::const_iterator it, itEnd;
    for(it = v.cbegin(), itEnd = v.cend(); it != itEnd; ++it)
    {
        std::cout << *it << ' ';
    }
}
 
int main()
{
    std::vector<std::string> v{"34", "63", "P1", "P2", "17"}, vs;
    std::vector<float> vf;
    std::vector<std::string>::const_iterator it, itEnd;
    for(it = v.cbegin(), itEnd = v.cend(); it != itEnd; ++it)
    {
        if(std::all_of(it->begin(), it->end(), static_cast<int(*)(int)>(std::isdigit)))
        {
            vf.push_back(atof(it->c_str()));
        }
        else
        {
            vs.push_back(*it);
        }
    }
    std::cout << "vs contains:" << std::endl;
    PrintVec(vs);
    std::cout << "\n\nvf contains:" << std::endl;
    PrintVec(vf);
    return 0;
}
Yandex
Объявления
30.06.2012, 23:59     Разбивка строчного массива
Ответ Создать тему
Опции темы

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