Как вернуть указатель на определенную часть строки в с++?

Пользователь

от raina , в категории: C/C++ , год назад

Как вернуть указатель на определенную часть строки в с++?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jett , 10 месяцев назад

@raina 

В 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
#include 

const char* getSubstring(const char* str, int start, int length) {
    // Вычисляем конечный индекс
    int end = start + length;

    // Создаем указатель на конечную часть строки
    const char* substring = str + start;

    // Создаем новую строку с заданной длиной
    char* result = new char[length + 1];
    strncpy(result, substring, length);
    result[length] = ''; // Добавляем нулевой символ в конец строки

    return result;
}

int main() {
    const char* str = "Hello, World!";
    const char* substring = getSubstring(str, 7, 5);
    std::cout << substring << std::endl;
    delete[] substring; // Не забудьте освободить память

    return 0;
}


В этом примере функция getSubstring() принимает указатель на строку, стартовый индекс и длину подстроки и возвращает указатель на новую строку, содержащую указанную часть исходной строки.


Вы можете также использовать ссылки вместо указателей:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#include 
#include 

std::string getSubstring(const std::string& str, int start, int length) {
    return str.substr(start, length);
}

int main() {
    std::string str = "Hello, World!";
    std::string substring = getSubstring(str, 7, 5);
    std::cout << substring << std::endl;

    return 0;
}


В этом примере функция getSubstring() принимает ссылку на строку и возвращает объект std::string, содержащий указанную часть исходной строки.

Пользователь

от jorge , 2 дня назад

@raina 

Для работы с определенным куском строки в 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
#include <iostream>
#include <cstring>

const char* getSubstring(const char* str, int start, int length) {
    // Вычисляем конечный индекс
    int end = start + length;

    // Создаем указатель на конечную часть строки
    const char* substring = str + start;

    // Создаем новую строку с заданной длиной
    char* result = new char[length + 1];
    strncpy(result, substring, length);
    result[length] = ''; // Добавляем нулевой символ в конец строки

    return result;
}

int main() {
    const char* str = "Hello, World!";
    const char* substring = getSubstring(str, 7, 5);
    std::cout << substring << std::endl;
    delete[] substring; 

    return 0;
}


Также можно использовать ссылки:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#include <iostream>

std::string getSubstring(const std::string& str, int start, int length) {
    return str.substr(start, length);
}

int main() {
    std::string str = "Hello, World!";
    std::string substring = getSubstring(str, 7, 5);
    std::cout << substring << std::endl;

    return 0;
}


В этом примере, функция getSubstring принимает строку и возвращает подстроку, начиная с start и продолжая length символов.