Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 01.04.2020
Сообщений: 19

Как превратить строку с числами и запятыми в численный массив

03.04.2020, 07:26. Показов 2300. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Например:чтобы string a="3,66,8,23";
превратилось в int arr[4]={3,66,8,23};
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.04.2020, 07:26
Ответы с готовыми решениями:

Как превратить строку в двухмерный массив byte?
Имеется длинная строка. Необходимо преобразовать её в несколько массивов 4 х 4

API возращает строку со значениями, как превратить её в массив
Добрый день. Нашел код, к моему сайту который мне необходим, где мне необходимо было работать с API этого сайта. Код полностью...

Превратить строку в массив
Как получить из строки, например "12345", массив символов 1,2,3,4,5 Спасибо Добавлено через 1 минуту Упс, все просто string...

5
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
03.04.2020, 11:21
adadadada, например, так...
Причем, с игнорированием пробелов
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
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
 
int main()
{
    string a = " 3 , 66, 8 ,23,45,67, ";
    stringstream ss(a);
    int j = 0;
    int arr[100];
    char ch;
 
    while(true)
    {
        int i = 0;
        ss >> i;
        if (!ss)
            break;
        cout << "arr[" << j << "] = " << i << endl;
        arr[j++] = i;
        do
        {
             ch = ss.get();
             if (!ss)
                 break;
             if (ch == ',')
                 break;
        } while (ch == ' ');
        if (!ss)
            break;
    }
    cout << "count = " << j << endl;
    return 0;
}
0
Just Do It!
 Аватар для XLAT
4212 / 2671 / 655
Регистрация: 23.09.2014
Сообщений: 9,093
Записей в блоге: 3
03.04.2020, 12:14
вариант:
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
#include <iostream>
#include <sstream>
 
int* split(std::string &s, char delim, size_t& n)
    {   
        n = 0;
        for(const auto& e : s)
        {   if(e == ',') n++;
        }
        int* p = new int[++n];
 
        std::stringstream ss(s);
        std::string item;
        
        for(int i = 0; i < n; i++)
        {   std::getline(ss, item, delim);
            p[i] = std::stoi(item);
        }
        return p;
    }
 
int main()
{   std::string a = "3 ,66, 8 , 23;";
    size_t N;
    int*   arr = split(a, ',', N);
    
    for(int i = 0; i < N; i++)
    {   std::cout << arr[i] << "\n";
    }
 
    return 0;
}
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
03.04.2020, 15:44
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
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
 
int main()
{
    int i=0, n=0;
    string s = " 5, 122, 7, 33, 17 ";
    
    while(s[i])
    {
        if(s[i]==',') {n++;s[i]=' ';}
        i++;
    }     
    
    int* a = new int[n+1];
    
    i=0;
    stringstream ss(s); 
    while(ss >> a[i])
    {
        cout << a[i] << " "; 
        i++;
    } 
    cout << "\n";
    
    delete[]a;
system("pause");
return 0;
}
0
848 / 651 / 323
Регистрация: 24.02.2017
Сообщений: 2,297
03.04.2020, 19:45
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 <string>
using namespace std;
 
int main(){
 
    int i=0, n=0;
    string s = " 5,, 122, 7, 33, 17,66 ";
    char *t,*p;
 
    t=new char[s.length()+1];
    strcpy(t,s.c_str());
    p=strtok(t," ,");
    while(p){
       n++;
       p=strtok(NULL," ,");
    }
    int* a = new int[n];
 
 
    strcpy(t,s.c_str());
    p=strtok(t," ,");
    while(p){
       int sum=0,c=1,j=0;
       while(j<strlen(p)){
           sum= sum*c+p[j++]-'0';
           c=10;
        }
       a[i++]=sum;
       p=strtok(NULL," ,");
     }
 
    for( i=0;i<n;i++)
        cout<<a[i]<<"  ";
 
    delete[]a;
    system("pause");
    return 0;
}
Добавлено через 14 минут
Yetty, а если в строке будет 5 чисел и 5 запятых. Массив то будет с "мусором"

Добавлено через 15 минут
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
#include <iostream>
#include <string>
using namespace std;
 
int main(){
 
    int i=0, n=0;
    string s = " 5,, 122, 7, 33, 17,66 ";
    char *t,*p;
 
    t=new char[s.length()+1];
    strcpy(t,s.c_str());
    p=strtok(t," ,");
    while(p){
       n++;
       p=strtok(NULL," ,");
    }
    int* a = new int[n];
 
 
    strcpy(t,s.c_str());
    p=strtok(t," ,");
    while(p){
       int sum=0,j=0;
       while(j<strlen(p))
           sum= sum*10+p[j++]-'0';
       a[i++]=sum;
       p=strtok(NULL," ,");
     }
 
    for( i=0;i<n;i++)
        cout<<a[i]<<"  ";
 
    delete[]a;
    system("pause");
    return 0;
}
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
03.04.2020, 20:11
Цитата Сообщение от повар1 Посмотреть сообщение
если в строке будет 5 чисел и 5 запятых. Массив то будет с "мусором"
если запятые стоят друг за другом тоже. повар1, я сбросил код под пример ТС
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.04.2020, 20:11
Помогаю со студенческими работами здесь

Превратить строку в массив чисел
У меня есть строка, допустим &quot;1,2,3,4&quot;. Мне нужно сделать так, чтобы числа были записаны в массиве.

Необходимо превратить строку в массив строк
Мне нужно чтобы из строки в массив попали числа (в том числе и вещественные), а также знаки *,-,+,/ и (,). Я делал так: my @array =...

Входную строку превратить в строковый массив, с разделителями
Входную строку превращаем в строковый массив, при этом нужно чтобы все символы вошли в этот массив; при использовании метода Split(),...

Как строку, заполненную числами, преобразовать в числовой массив?
Привет всем. Кто-нибудь знает как строку заполненную числами преобразовать в числовой массив? Сама смогла найти только как с помощью...

Как правильно обработать строку с запятыми?
После кодирования, например, $pic='облачно, дождь'; $pic2='2'; json_encode(array((string)$pic, (intval)$pic2)); раскодируется...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача №1: при указании работ (справочник РаботыПоРемонтуСпецтехники),. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru