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

Скопировать string из одной строки в другую - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Cамоучитель, посоветуйте http://www.cyberforum.ru/cpp-beginners/thread262747.html
Посоветуйте книгу какую-нибудь по С++ в среде visual studio для начинающих. для совсем начинающих) ну в общем вот и вся проблема) заранее благодарна!
C++ Дано натуральное число. Найти ближайшее простое число 1. Дано натуральное число. Найти ближайшее простое число. 2. Дано 20 пар однозначных чисел. Первое число каждой пары означает количество забитых мячей в матче, второе - пропущенных в той же игре.... http://www.cyberforum.ru/cpp-beginners/thread262736.html
C++ Найти площадь равностороннего треугольника, если известна его стороны
1. Найти площадь равностороннего треугольника, если известна его стороны. 2. Написать программу, которая вычисляет количество населения планеты за год, если задано текущее количество населения,...
C++ Класс Студент
Задание1 Определите класс «Студент».Методы – перевод на следующий курс, выпуск, отчисление. Задание2 Разработать дружественную классу «Студент» функцию, определяющую знак зодиака, под которой...
C++ Программа на C++ с использованием шаблона функции. http://www.cyberforum.ru/cpp-beginners/thread262717.html
Нужно написать программу которая считает сумму элементов главной диагонали матрицы. Для подсчета использовать шаблон функции. помогите пожалуйста кому не сложно.
C++ Вычисление сильных компонент орграфа. Алгоритм Габова. Помогите, пожалуйста, найти инфу по этой теме. В интернете никак не могу отыскать, а если и нахожу, то очень мало :wall: Скинте ссылки может на какие-то хорошие книги Заранее спасибо! подробнее

Показать сообщение отдельно
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3912 / 2149 / 549
Регистрация: 18.10.2014
Сообщений: 3,756
29.10.2014, 17:49
(Если копировать надо с n1 до n2 включительно)

C++
1
2
std::string st;
st = h.substr(n1, n2 - n1 + 1);
Или, если хотите

C++
1
2
std::string st;
std::copy(h.begin() + n1, h.begin() + n2 + 1, std::back_inserter(st));
или

C++
1
2
std::string st(n2 - n1 + 1, ' ');
std::copy(h.begin() + n1, h.begin() + n2 + 1, st.begin());
Более того, с определенных пор язык гарантирует, что строка в std::string хранится непрерывно. Поэтому можно и

C++
1
2
std::string st(n2 - n1 + 1, ' ');
h.copy(n1, n2 - n1 + 1, &st[0]);
C++
1
2
std::string st(n2 - n1 + 1, ' ');
std::copy(h.begin() + n1, h.begin() + n2 + 1, &st[0]);
C++
1
2
std::string st(n2 - n1 + 1, ' ');
std::copy(&h[n1], &h[n2] + 1, &st[0]);
Ну и разумеется можно было все сделать еще на этапе инициализации

C++
1
std::string st(h, n1, n2 - n1 + 1);
C++
1
std::string st(h.begin() + n1, h.begin() + n2 + 1);
C++
1
std::string st(&h[n1], &h[n2] + 1);
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru