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

Наследование от std::basic_string - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Чтение UNICODE символов из STDOUT процесса http://www.cyberforum.ru/cpp-beginners/thread1206474.html
У меня есть процесс (cmd.exe) создан через WINAPI функцию CreateProcess. К процессу подключено 2 переменных типа HANDLE из которых в свою очередь созданы пайпы для записи и чтения из процесса. HANDLE g_hChildStd_IN_Rd = NULL; // write to pipe HANDLE g_hChildStd_IN_Wr = NULL; // read from pipe HANDLE g_hChildStd_OUT_Rd = NULL; HANDLE g_hChildStd_OUT_Wr = NULL; ...
C++ Оптимизация. Метод Марквардта Дорогие форумчане. Выручите. Нужна помощь по методам оптимизации метода Марквардта. Не пойму, что я упустил. Программа выдает не те данные. Должно на выходе х6=(-0.01;0,03). а у меня берет другую точку.Этот результат я просчитал и он правильный, а вот с кодом не как. Да и в книге по методам оптимизации, тоже приведен пример с этим ответом. #include "stdafx.h" #include <stdio.h>... http://www.cyberforum.ru/cpp-beginners/thread1206473.html
Построить упорядоченный по возрастанию третий массив слиянием двух заданных C++
Заданные два упорядоченных по возрастанию одинаковых массива. Построить упорядоченный по возрастанию третий массив слиянием двух заданных.
Системное программирование. Работа с процессами и анонимным каналом C++
Есть задание .Программа порождает два процесса, один процесс пишет в неименованный канал, другой считывает из него информацию и записывает в файл. Есть программа. Текст программы: #include <windows.h> #include <conio.h> #include<iostream.h> #include<stdio.h> #define FF "lr.txt"
C++ Элементы массива с нечетных позиций необходимо отсортировать по возрастанию, с четных - по убыванию http://www.cyberforum.ru/cpp-beginners/thread1206467.html
Значит есть одномерный массив из 10 чисел. Заполнен случайными значениями. Числа расположенные на нечетных позициях необходимо отсортировать по возрастанию. Числа расположенные на четных позициях необходимо отсортировать по убыванию. Сортировка вроде работает правильно, а вот диапазон чисел како-то не правильный берется :) #include <iostream> #include <cstdlib> #include <ctime>...
C++ Обращение к элементам массива через биты некоторого числа Пусть есть массив Mass из 10 элементов и число А = 510 = 0...0 01012. Мне надо обратиться к 0 и 2 элементам (или к 7 и 9 - это как посмотреть) массива Mass. Можно ли как-нибудь через биты числа А получить доступ к элементам массива Mass? подробнее

Показать сообщение отдельно
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
12.06.2014, 18:28     Наследование от std::basic_string
Суть задачки: надо с текста считать слова через istream_iterator откидывая знаки пунктуации в конце слов. Написал вот так, отнаследовав от std::basic_string. В принципе, все работает, но правильно ли так делать? Какие еще способы кто может предложить?
Была еще идея писать свой istream_iterator, но там код слишком длинный получается ради такой простой задачки. Может есть что то такое в boost? Вот код:
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
40
41
42
#include <iostream>
#include <string>
#include <iterator>
#include <sstream>
#include <vector>
#include <algorithm>
 
template <typename CharT,
          typename Traits = std::char_traits<CharT>,
          typename Allocator = std::allocator<CharT>>
class basic_string_adapter : public std::basic_string<CharT, Traits, Allocator>
{
   using basic_str = std::basic_string<CharT, Traits, Allocator>;
public:
   using basic_str::basic_str;
   using basic_str::operator =;
 
   friend
   std::basic_istream<CharT, Traits>&
   operator>>(std::basic_istream<CharT, Traits>& is,
              basic_string_adapter<CharT, Traits, Allocator>& str)
   {
      //is >> str;
      basic_str temp;
      is >> temp;
      auto pos = std::find_if(temp.begin(), temp.end(), ::ispunct);
      temp.erase(pos, temp.end());
      str = std::move(temp);
      return is;
   }
};
 
int main()
{
   std::istringstream iss{"one, two,, three; four: five"};
   using mystring = basic_string_adapter<char>;
   std::vector<mystring> v{std::istream_iterator<mystring>(iss), std::istream_iterator<mystring>()};
   for (auto s : v) std::cout << s << " ";
 
   system("pause");
   return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 12:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru