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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.95
proger2030
11 / 11 / 2
Регистрация: 15.11.2010
Сообщений: 256
#1

Функция Mid - C++

02.10.2011, 21:03. Просмотров 3010. Ответов 6
Метки нет (Все метки)

В бэйсике есть такая функция Mid на С++ есть ли такая функция ? Напишите если есть с примером и пояснением.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.10.2011, 21:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция Mid (C++):

Пободные функции:Left$, Mid$, Right$, Hex, Val, RGB - C++
Подскажите подобные функции в VC++: 1. Left$ 2. Mid$ 3. Right$ 4. Hex 5. Val 6. RGB

Перегрузка операций: friend-функция или функция-член класса - C++
Здравствуйте, меня интересует вопрос, в чем разница при перегрузке операторов через operator и friend. Вот к примеру такой код. class...

Функция удаления текста в скобках [2], непосредственно функция + 12кб вложений - C++
Доброго времени суток, случилось так, что пришлось работать с с-строками (лаба, угу), в которой нужно удалить весь текст в скобках,...

Функция sqrt: существует более одного экземпляра. Функция перегруженная - C++
#include <iostream> #include <math.h> #include <iomanip> using namespace std; int main(){ float s, p; int c, a; s=0; ...

какую библиотеку надо подключать чтоб работала функция _getch() и функция cin.get() - C++
какую библиотеку надо подключать чтоб работала функция _getch() и функция cin.get()

Чистая виртуальная функция функция не имеет оператора переопределения - C++
Пишу программу для записи заметок. Есть 2 класса: Page и Note. Note наследуется от Page. Page.h #pragma once ...

6
softmob
1248 / 698 / 155
Регистрация: 20.02.2010
Сообщений: 1,035
02.10.2011, 21:26 #2
C++
1
2
#include <string>
string substr( size_type index = 0, size_type length = npos ) const;
Метод substr класса string возвращает подстроку текущей строки, начиная с индекса index, длиной в length символов.
Если index + length в результате дает значение за концом строки, тогда будет возращена только часть строки, начинающаяся с индекса index.
Если length опущена, по умолчанию ей будет задано значение string::npos, а substr будет возвращать часть строки, начинающуюся с индекса index.
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <string>
using namespace std;
 
int main(void)
{
    string a("abcde");
    cout << a.substr(1,3) << endl;
    system("pause");
}
0
xAtom
915 / 740 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
02.10.2011, 21:29 #3
Без объекта string
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
#include <stdio.h>
 
char* mid(char* dst, char* src, int start, int len) {
   // сохраним адрес первого элемента
   char* tmp = dst; 
   
   // присвоим конечный адрес до start+len
   char* end = src + (start + len); 
 
   // итерируем до указанного адреса заполняя выходной буфер
   for(src += start; src <= end; *dst++ = *src++); 
   *dst = '\0';  //для завершения строки-буфера надо указать null terminate(C/C++)
   return tmp;
}
 
int  main(void) {
   char* str = "Tomate, Orange, Potate";
   char  sout[32];  // буфер для копирований
    
   // в языках подобных С/С++ массивы начинаются с нуля а не как в(VB, Pascal) с 1
    mid(sout, str, 0, 5); // копируем в выходной буфер с 1 по 6 байт... "Tomate"
    puts(sout);
    
    mid(sout, str, 8, 5); // "Orange"
    puts(sout);
 
    puts( mid(sout, str, 16, 5) );  // "Potate"
    getchar();
    return 0;
}
0
rangerx
1935 / 1544 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
02.10.2011, 22:07 #4
Для C-строк можно воспользоваться strncpy, но в C++ лучше использовать std::string и, соответственно, метод substr.
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
#include <stdio.h>
#include <string.h>
#include <stddef.h>
 
char* mid(char* dest, const char* src, size_t start, size_t len)
{
    strncpy(dest, src + start, len);
    dest[len] = '\0';
    return dest;
}
 
int main()
{
    char dest[10];
    char src[] = "simple text";
 
    mid(dest, src, 0, 6);
    puts(dest);
 
    mid(dest, src, 7, 5);
    puts(dest);
 
    return 0;
}
Добавлено через 18 минут
ну, и ещё вариант с динамическим выделением памяти
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
#include <stdio.h>
#include <string.h>
#include <stddef.h>
#include <stdlib.h>
 
char* strndup(const char* src, size_t start, size_t len)
{
    char* dest = (char*)calloc(len + 1, sizeof(char));
    strncpy(dest, src + start, len);
    dest[len] = '\0';
    return dest;
}
 
int main()
{
    char* dest;
    char src[] = "simple text";
 
    dest = strndup(src, 0, 6);
    puts(dest);
    free(dest);
 
    dest = strndup(src, 7, 5);
    puts(dest);
    free(dest);
 
    return 0;
}
0
accept
4825 / 3246 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
03.10.2011, 06:21 #5
Цитата Сообщение от rangerx
C
1
sizeof(char)
всегда равен единице
0
rangerx
1935 / 1544 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
03.10.2011, 10:37 #6
Цитата Сообщение от accept Посмотреть сообщение
всегда равен единице
Да, но так, на мой взгляд, нагляднее, чем использовать "магические числа".
0
accept
4825 / 3246 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
03.10.2011, 10:46 #7
C
1
char *dest = (char *) malloc(len + 1);
0
03.10.2011, 10:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2011, 10:46
Привет! Вот еще темы с ответами:

что за функция такая strstr? или это не функция? - C++
void search(sp *list){ sp *prt = list; char f,r; cout&lt;&lt;Rus(&quot;введите текст&quot;)&lt;&lt;endl; cin&gt;&gt;f; cout&lt;&lt;Rus(&quot;введите выходной...

Создать производный класс, в котором реализована функция умножения вектора на число и функция сложения двух векторов - C++
Write программу с использованием класса Вектор (не без помощи форумчанина), но необходимо создать производный класс, в котором реализована...

Функция заполняющая массив и функция вывода массива - C++
Напишите две функции. Первая функция заполняет массив, вторая функция выводит массив на экран

Нужно сделать, чтобы программа состояла из 3 функций, тоесть 1-ая функция ввода массива, 2-ая основная функция, 3-я- вывод массива - C++
Есть программа #include &lt;iostream&gt; #include &lt;algorithm&gt; const int N = 5; int handSet(void) { int a; std::cout...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru