Форум программистов, компьютерный форум 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, то опять меняем маршрут.....требуется написать программу, которая напишет номер элемента, который сможет пройтись таким образом по всем нулям....реализовать поиск с помощью рекурсивной... подробнее

Показать сообщение отдельно
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
24.04.2013, 19:26
Цитата Сообщение от Xsenon_rus Посмотреть сообщение
Но при этом нельзя пользоваться string.
Под string уже давно (где-то с 2000) понимают STL std::string, а cstring -- лишь набор функций.

Цитата Сообщение от Xsenon_rus Посмотреть сообщение
просто в моем случае, как я написал в начале нельзя пользоваться <cstring> и <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
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include <iostream>
 
size_t strlen(const char *string) {
  size_t result = 0;
  while (*string++ != '\0') {
    ++result;
  }
  return result;
}
 
char *strcpy(char *destination, const char *source) {
  char *result = destination;
  while (*source != '\0') {
    *destination++ = *source++;
  }
  *destination = '\0';
  return result;
}
 
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;
};
Цитата Сообщение от Xsenon_rus Посмотреть сообщение
Текст, представляющий собой последовательность строк
Т.е. текст является набором строк. Как хранить набор строк -- не сказано, но уточнение, что строка имеет максимальную длину косвенно указывает, что нужен массив строк.

Если вы все хотите хранить в одной здоровенной строке, тогда все усложняется.

Добавлено через 4 минуты
Объект будет очень негибким, работа с таким объектом будет крайне неуклюжей, да и с точки зрения декомпозиции, объект хранящий текст в виде одного огромного массива символов -- глупость.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru