1 / 1 / 0
Регистрация: 28.10.2017
Сообщений: 48
1

Как строку std::string конвертировать в массив целых чисел?

29.11.2018, 12:06. Показов 1602. Ответов 8
Метки нет (Все метки)

Как строку конвертировать в массив целых чисел?
Например "1234" превратить в {1; 2; 3; 4}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.11.2018, 12:06
Ответы с готовыми решениями:

Как конвертировать строку String в массив UInt8?
Есть строка var str = "test" как ее конвертировать в массив var array :

Как конвертировать System::String в std::string?
Как конвертировать system::string в std::string? А лучше сразу system::string в int.

Как совместить строку типа String, имеющуюся в коде и функцию, принимающую std::string ?
Доброго времен суток)) У меня такая проблема: есть строка типа String^ , а функция принимает...

std::string конвертировать в LPCWSTR
Как преобразовать std::string в LPCWSTR?Желательно не сложной операцией?Читал про метод c_str(),но...

8
Mental handicap
1245 / 623 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
29.11.2018, 12:29 2
Написать функцию Atoi, которая переводит строку в число
после, полученное число из строки можно разбить пользуясь следующим алгоритмом
псевдокод
Код
while(n)     
{
    k = n%10;   
    n = n/10;    
}
Ну или модифицировать свою функцию atoi которая сразу бы писала в массив
1
1 / 1 / 0
Регистрация: 28.10.2017
Сообщений: 48
29.11.2018, 12:35  [ТС] 3
Цитата Сообщение от Azazel-San Посмотреть сообщение
Написать функцию Atoi, которая переводит строку в число
А если строка настолько длинная, что не поместится в int?
Например "23432482374632649293402189401 842370497325473255243564658794 215846912704983256235645634832 89..."
0
Mental handicap
1245 / 623 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
29.11.2018, 12:37 4
Цитата Сообщение от ---Maxim--- Посмотреть сообщение
А если строка настолько длинная, что не поместится в int?
длинная арифметика
1
446 / 332 / 172
Регистрация: 01.07.2015
Сообщений: 1,162
29.11.2018, 12:38 5
Лучший ответ Сообщение было отмечено ---Maxim--- как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <iterator>
#include <vector>
#include <string>
 
using namespace std;
 
int main()
{
    string s;
    cin >> s;
 
    vector<char> a(s.length());
 
    for (int i = 0; i < s.length(); ++i)
        a[i] = s[i] - '0';
 
    copy(a.cbegin(), a.cend(), ostream_iterator<int>(cout, " "));
}
Добавлено через 31 секунду
правда может не поместиться в size_t, если работа идет на 32х битах
1
Mental handicap
1245 / 623 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
29.11.2018, 12:46 6
---Maxim---, или как я уже говорил вы можете писать сразу в массив, массив может быть "любой" длины, в топике что я вам скинул много разных решений, изучите их и поймете где можно чуть модернизировав, получить нужный результат

Добавлено через 5 минут
---Maxim---, как вариант украдено и переработано у автора выше
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <vector>
#include <string>
 
using namespace std;
 
int main()
{
    string s;
    cin >> s;
 
    vector<int> a;
 
    for (int i = 0; i < s.length(); ++i)
        a.push_back(s[i] - '0');
 
    cout << a[2];
}
1
1 / 1 / 0
Регистрация: 28.10.2017
Сообщений: 48
29.11.2018, 12:51  [ТС] 7
ReDoX, спасибо, всё работает!
Правда я не ронял зачем нужна строка copy(a.cbegin(), a.cend(), ostream_iterator<int>(cout, " "));

Цитата Сообщение от Azazel-San Посмотреть сообщение
в топике что я вам скинул много разных решений, изучите их и поймете где можно чуть модернизировав, получить нужный результат
Спасибо!
0
16079 / 8681 / 2120
Регистрация: 30.01.2014
Сообщений: 14,960
29.11.2018, 12:59 8
Цитата Сообщение от ---Maxim--- Посмотреть сообщение
Правда я не ронял зачем нужна строка copy(a.cbegin(), a.cend(), ostream_iterator<int>(cout, " "));
Напечатать массив в консоли.
0
0 / 0 / 0
Регистрация: 29.11.2018
Сообщений: 5
29.11.2018, 13:07 9
наверное проще всего итерировать по строке и добавлять значения в вектор, отняв от него "0". хорошо бы еще проверять значения, что они от "0" до "9"
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.11.2018, 13:07
Помогаю со студенческими работами здесь

ошибка error: cannot convert 'std::string {aka std::basic_string<char>}' to 'std::string* {aka std::basic_stri
на вод поступают 2 строки типа string. определить количество вхождений строки 2 в строку 1 ошибка...

Как конвертировать string в массив char
Как конвертировать string в массив char

Где и почему используют ту или иную строку std::string, char[], System::String^ ?
Где и почему используют ту или иную строку std::string, char, System::String^ ? Объясните...

Как скопировать строку типа std::string в другую строку такого же типа?
Хотел скопировать строку #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;string&gt; using...


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

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

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