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

Вставить в последовательность строк, начиная (заканчивая) с текущей, после (перед) заданного контекста заданную подстроку - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ процедуры в qt http://www.cyberforum.ru/cpp-beginners/thread846072.html
доброго времени суток. вопрос такой. если в qt аналог "procedure" как например в delphi(перехожу с него). имеется кусок кода который часто используется в проге в разных местах. т.к. не хочется перегружать код лишним текстом то хотелбы чтобы он вызавался одной командой типа "procedure" как например в delphi
C++ VS2012 Express. Ошибка компиляции - error C1083: Не удается открыть файл включение: stdafx.h: No such file or directory Ребят, помогите, я в вижуал не работала, не понимаю, ЧТО она от меня хочет... #include "pch.h" #include "stdafx.h" #include <stdio.h> #include <iostream> using std::cout; int main() { http://www.cyberforum.ru/cpp-beginners/thread846061.html
Опишите безопасное ослабление правил для типов аргументов замещаемых функций C++
Здорова! Есть еще задачка запутанная: Предположим, что правила проверки типов для аргументов ослаблены аналогично правилам для типов возвращаемых значений с тем, чтобы можно было заместить функцию, имеющую аргумент типа Base*, на функцию с аргументом Derived*. Напишите программу которая может испортить объект типа Derived без использования приведения типов. Опишите безопасное ослабление...
C++ Подскажите где ошибка
Выдаёт ошибку при компиляции #include <fstream> #include <vector> #include <iostream> using namespace std; class Toy { public: int Price, MinAge, MaxAge; char * Name;
C++ Дан текст, найти количество слов и количество слов, у которых первый и последний символ совпадают http://www.cyberforum.ru/cpp-beginners/thread846049.html
Помогите пожалуйста, выполнить задание. Дан текст из N символов. Группы символов, расположенные между пробелами и не содержащие пробелов внутри себя, называем словами. Найти: количесвто слов в данном тексте; количество слов, у которых первый и последний символ совпадают.
C++ Обход матрицы по 0 с заданного элемента Дана квадратная матрица, состоящая из 0 и 1...делается обход начинаю с какого то элемента... пробегается по 0, например вправо, если встречается 1, то мы меняем маршрут, вниз или вверх, если опять встречается 1, то опять меняем маршрут.....требуется написать программу, которая напишет номер элемента, который сможет пройтись таким образом по всем нулям....реализовать поиск с помощью рекурсивной... подробнее

Показать сообщение отдельно
Xsenon_rus
8 / 8 / 0
Регистрация: 18.04.2011
Сообщений: 104
24.04.2013, 17:12  [ТС]     Вставить в последовательность строк, начиная (заканчивая) с текущей, после (перед) заданного контекста заданную подстроку
Цитата Сообщение от lemegeton Посмотреть сообщение
Похоже, вы пишете контейнер, абстрагирующий работу с набором строк.
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include <cstring>
#include <iostream>
 
class Text {
 public:
  typedef char **Line;
  typedef char *const *ConstLine;
  
  Text() : size(0), capacity(2), text(new char*[capacity]) {}
  Text(const Text &other) : size(0), capacity(2),
    text(new char*[capacity]) {
    insert(begin(), other.begin(), other.end());
  }
  Text &operator=(const Text &other) {
    if (this != &other) {
      clear();
      insert(begin(), other.begin(), other.end());
    }
    return *this;
  }
  virtual ~Text() {
    clear();
    delete [] text;
  }
 
  void clear() {
    for (size_t i = 0; i < size; ++i) {
      delete [] text[i];
    }
    size = 0;
  }
  size_t getSize() const { return size; }
  size_t getCapacity() const { return capacity; }
  size_t getMaximumCapacity() const { return -1; }
 
  ConstLine insert(ConstLine position, const char *string) {
    size_t n = position - begin();
    assureCapacity();
    Line newLine = begin() + n;
    for (Line i = text + size; i != newLine; --i) {
      *i = *(i - 1);
    }
    *newLine = strcpy(new char[strlen(string) + 1], string);
    ++size;
    return newLine;
  }
  void insert(ConstLine position, ConstLine first, ConstLine last) {
    while (first != last) {
      position = insert(position, *first) + 1;
    }
  }
  void erase(ConstLine position) {
    for (Line i = text + (position - begin()); i != end() - 1; ++i) {
      *i = *(i + 1);
    }
    --size;
  }
 
  Line begin() { return text; }
  ConstLine begin() const { return text; }
  Line end() { return text + size; }
  ConstLine end() const { return text + size; }
 private:
  void assureCapacity() {
    if (size >= capacity - 1) {
      capacity += 1;
      char **newText = new char*[capacity];
      for (size_t i = 0; i < size; ++i) {
        newText[i] = text[i];
      }
      delete [] text;
      text = newText;
    }
  }
  size_t size;
  size_t capacity;
  char **text;
};
 
int main(int argc, char *argv[]) {
  Text text;
  // добавление строк в конец
  text.insert(text.end(), "To be, or not to be: that is the question:");
  text.insert(text.end(), "The slings and arrows of outrageous fortune,");
  text.insert(text.end(), "Or to take arms against a sea of troubles,");
  text.insert(text.end(), "And by opposing end them? To die: to sleep;");
  text.insert(text.end(), "No more; and by a sleep to say we end");
  text.insert(text.end(), "The heart-ache and the thousand natural shocks");
  text.insert(text.end(), "That flesh is heir to, 'tis a consummation");
 
  // вставляется пропущенная вторая строка
  text.insert(text.begin() + 1, "Whether 'tis nobler in the mind to suffer");
 
  // вывод на экран
  for (Text::ConstLine i = text.begin(); i != text.end(); ++i) {
    std::cout << *i << std::endl;
  }
  
  return 0;
};
Вы все верно написали, просто в моем случае, как я написал в начале нельзя пользоваться <cstring> и <string.h>

Добавлено через 3 минуты
Я придумал только для вставки строки , что-то типа
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void Text::Zdvig(int pos1, int pos2)
{
    char temp[256];
    int i = 0;
 
    for (i = 0; m_text[pos2][i] != '\0'; ++i)
    {
        m_text[pos2+1][i]= m_text[pos2][i];
    }
 
    m_text[pos2+1][i] = '\0';
 
    for (i = 0; m_text[pos1][i] !='\0'; ++i)
    {
        m_text[pos2][i] = m_text[pos1][i];
    }
    m_text[pos2][i] = '\0';
}
Это сдвиг, а потом у меня идет вставка на нужное место. Но как вставить в предложение в строке я все ещё не пойму.
 
Текущее время: 20:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru