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

std::copy_if - C++

Восстановить пароль Регистрация
 
ovner
7 / 7 / 0
Регистрация: 06.10.2012
Сообщений: 140
24.07.2013, 00:24     std::copy_if #1
Привет!
Подскажите пожалуйста как мне с помощью std::copy_if скопировать строку string со знаками пунктуации, в другую string строку, но уже без знаков пунктуации.
так не работает:
C++
1
2
3
4
string A = "Privet! Kak, dela?.,,A?";
    string B;
    copy_if(A.begin(),A.end(),B.begin(),!ispunct);
    cout << B;
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
24.07.2013, 01:16     std::copy_if #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using std::cout;
using std::endl;
#include <string>
using std::string;
#include <algorithm>
using std::copy_if;
#include <iterator>
using std::back_inserter;
 
int main()
{
    string A="Privet! Kak, dela?.,,A?";
    string B;
    copy_if(A.begin(),A.end(),back_inserter(B),[](char a){return (!ispunct(a));});
    cout << B;
 
    return 0;
}
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
24.07.2013, 01:24     std::copy_if #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <string>
#include <iterator>
#include <functional>
#include <algorithm>
 
int main(int argc, char** argv)
{
    std::string A = "Privet! Kak, dela?.,,A?", B;
    std::copy_if( A.begin(), A.end(), std::inserter(B, B.begin()), std::not1(std::ref(ispunct)) );
    std::cout << "Result: " << B << std::endl;
     
    return 0;
}
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
24.07.2013, 20:26     std::copy_if #4
В данном случае, больше подойдёт remove_copy_if, чем copy if
C++
1
std::remove_copy_if(s1.begin(), s1.end(), std::back_inserter(s2), ispunct);
Yandex
Объявления
24.07.2013, 20:26     std::copy_if
Ответ Создать тему
Опции темы

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