Функция не возвращает string

98
15 сентября 2021, 06:00

Делаю функцию, преобразовывающую номер из номера из "+7(9хх)хх-ххх-хх" в "89ххххххххх"

#include <iostream>
#include <string>
using namespace std;
string ch(string x)
{
    int a = 0;
    string A[11];  // в номере 11 цифр
    for (int i = 0; i < x.length(); i++)
    {
        if (x[i] != ')' or x[i] != '(' or x[i] != '-' or x[i] != '+')
        {
            A[a] = x[i]; // элементы, не являющиеся спец. знаки, записываю в новый стринг
            a++;
        }
    }
    A[0] = '8'; 
    return A;
}

Выдаёт следующую ошибку:

[Error] could not convert '(std::string*)(& A)' from 'std::string* {aka std::basic_string*}' to 'std::string {aka std::basic_string}'

Помогите разобраться, почему выдаёт ошибку

Answer 1

Сделайте проще:

std::string phone_number(const std::string& x)
{   
    std::string A; // не массив строк, а одна строка нужна
    const size_t size = x.length(); 
    for (size_t i = 0; i < size; ++i)
        if (isxdigit(x[i])) //записываем только числа
            A.push_back(x[i]);
    A[0] = '8';
    return A;
}

или так:

std::string phone_number(const std::string& x)
{   
    std::string A("8"); 
    const size_t size = x.length(); 
    size_t i = 0;
    while (!isdigit(x[i]) && i < size)
         {  ++i; }
    for (;i < size; ++i) {
        if (isdigit(x[i]))
            A += x[i];  
    }
    return A;
}

или использовав стандартные альгоритмы. Например:

std::string phone_number(const std::string& x)
{   
    std::string A(x); 
    A.erase(std::stable_partition(A.begin(), A.end(), isdigit), A.end());
    A[0] = '8';
    return A;
}
Answer 2

Напишите

char A[11];  // в номере 11 цифр

и не забудьте записать '\0' в конец строки.

READ ALSO
указатель на функцию в классе

указатель на функцию в классе

Понемножку перехожу с си на c++У меня возникла такая проблема

116
C++, namespace и оператор расширения видимости

C++, namespace и оператор расширения видимости

Подскажите, что означает оператор расширения области видимости, который ставится перед идентификатором?

127
Как расположить элементы в html не по сетке?

Как расположить элементы в html не по сетке?

Хотел сверстать страницу, которая будет похожа на картинкуКак можно размещать элементы не по прямой линии, а по кривой?) чтобы можно было...

83
Консольный ввод/вывод C# [закрыт]

Консольный ввод/вывод C# [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

89