Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
1 / 1 / 2
Регистрация: 18.11.2013
Сообщений: 337

Преобразование строка-число-строка

01.10.2014, 19:32. Показов 1366. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, можете объяснить или показать на примере, как можно из строки извлечь числа, чтобы потом можно было с ними работать и каких их потом вернуть опять на свое место. Например "25 и 17 больше, чем 3"
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.10.2014, 19:32
Ответы с готовыми решениями:

дана строка, изображающая целое положительное число. Вывести сумму цифр этого числа. Строка должна вводиться с клавиатуры.
Будьте добры,помогите с решением задачи: дана строка, изображающая целое положительное число. Вывести сумму цифр этого числа. Строка...

Дана строка. Подсчитать сколько раз первая строка входит во вторую
Дана строка. Подсчитать сколько раз первая строка входит во вторую. Например: вводим "при" (строка должна вводиться с...

Дана строка символов. Проверьте,является ли данная строка палиндромом
Парни нужна помощь,нужен код решения этой задачи на языке с++. Дана строка символов. Проверьте,является ли данная строка палиндромом.

8
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
01.10.2014, 21:45
Например, с помощью strtol.
По ссылке есть примеры. З.Ы. Чем выполнять лишние действия (вырезать, а затем обратно вставить), проще просто скопировать.
0
Модератор
Эксперт С++
 Аватар для zss
13766 / 10960 / 6490
Регистрация: 18.12.2011
Сообщений: 29,234
01.10.2014, 21:49
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <sstream>
int main() 
{
    setlocale(LC_ALL,"Rus");
    const std::string s = "25 и 17 больше, чем 3";
    std::istringstream ssin(s);
    int n1,n2,n3;
    string s1,s2,s3;
    ssin>>n1; // 25
    ssin>>s1; //"и"
    ssin>>n2; //17
    ssin>>s2; //"больше,"
    ssin>>s3;  //"чем" 
    ssin>>n3;  // 3
    std::cout<<n1<<' '<<s1<<' '<< n2<<' '<<s2<<' '<< s3<<' '<< n3<<' ' << std::endl;
    system("pause");
    return 0;
}
0
1 / 1 / 2
Регистрация: 18.11.2013
Сообщений: 337
01.10.2014, 21:53  [ТС]
zss, А если строка вводится пользователем и мы заранее не знаем, что будет?
0
Модератор
Эксперт С++
 Аватар для zss
13766 / 10960 / 6490
Регистрация: 18.12.2011
Сообщений: 29,234
01.10.2014, 22:02
Цитата Сообщение от ilya0610 Посмотреть сообщение
мы заранее не знаем
Как ТС спросил, такой и ответ.
Главное, чтобы была понятна идея.
0
1 / 1 / 2
Регистрация: 18.11.2013
Сообщений: 337
01.10.2014, 22:03  [ТС]
Хорошо, спасибо, будем думать
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
02.10.2014, 00:14
Лучший ответ Сообщение было отмечено ilya0610 как решение

Решение

С помощью sstream, итераторов и replace/copy можно как-то так
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 <iterator>
#include <vector>
#include <algorithm>
#include <sstream>
int main(int argc, char *argv[]) 
{
    std::vector<int> numbers;
    std::string s, tmp;
    std::getline(std::cin, s); //сохраняем введенную строку 
    //копируем строку,  из-за деструктивности replace_if
    tmp = s;
    std::replace_if(tmp.begin(), tmp.end(), [](char c) { return !std::isdigit(c); }, ' ');
    std::istringstream s_stream(tmp);
    std::copy(std::istream_iterator<int>(s_stream), std::istream_iterator<int>(), std::back_inserter(numbers));
    
    for(std::size_t i = 0, cnt = numbers.size(); i < cnt; ++i)
    {
        //что-то делаете с числами, например, выводите:
        std::cout << numbers[i] << std::endl;
    }
    //исходная строка
    std::cout << s << std::endl;
    
    std::cin.get();
}
0
1 / 1 / 2
Регистрация: 18.11.2013
Сообщений: 337
03.10.2014, 08:55  [ТС]
KOPOJI, Вопрос такой, а можно ли это сделать не через vector, а при помощи библиотеки string. h и как?
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
03.10.2014, 11:49
Цитата Сообщение от ilya0610 Посмотреть сообщение
а при помощи библиотеки string. h
Непонятно, причем тут строки. Вектор используется для хранения чисел. Разве что переписать без использования алгоритмов, "нативно". Как-то так:
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
#include <iostream>
#include <vector>
#include <string>
 
int main(int argc, char *argv[]) 
{
    std::string s;
    std::vector<int> numbers;
 
    std::getline(std::cin, s); //сохраняем введенную строку 
 
    for(std::size_t i = 0, tmp = 0, symbols = 1, cnt = s.size(); i < cnt; ++i, symbols = 1)
    {
        if(isdigit(s[i]))
        {
            tmp = i;
            while(++i < cnt && isdigit(s[i]))
                ++symbols;
            numbers.push_back(std::atoi(s.substr(tmp, symbols).c_str()));
        }
    }
 
    for(std::size_t i = 0, cnt = numbers.size(); i < cnt; ++i)
    {
        //что-то делаете с числами, например, выводите:
        std::cout << numbers[i] << std::endl;
    }
    std::cin.get();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.10.2014, 11:49
Помогаю со студенческими работами здесь

Строка: Определить, является ли строка симметричной, а может она - палиндром...
Пожалуйста

Почему строка, считанная из файла и такая же строка в программе не равны, хотя они, вроде бы, одинаковы?
Есть две строки. MSK=&quot;Москва&quot; и from, считанная из текстовика, через getline Для проверки вывожу эти обе строки, на первый взгляд...

Дана строка символов до точки. Составить программу, проверяющую, является ли данная строка палиндромом, т. е. читается ли она слева направо и справа н
Дана строка символов до точки. Составить программу, проверяющую, является ли данная строка палиндромом, т. е. читается ли она слева направо...

Строка: Проверить, содержится ли строка S2 в строке S1.
Даны две строки: S1 и S2. Проверить, содержится ли строка S2 в строке S1. Если да, то вывести номер позиции, начиная с которой S2...

Строка + число
Приветствую! Дано: Дана строка вида: &quot;1+A/b+C+1/H+N&quot; где h=1/N N=1..50; И вывести полученные строки в текстовый файл....


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru