Q:

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

Делаю функцию, преобразовывающую номер из номера из "+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}'

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

A:

Сделайте проще: 
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;
}

