Делаю функцию, преобразовывающую номер из номера из "+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}'
Помогите разобраться, почему выдаёт ошибку
Сделайте проще:
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;
}
Напишите
char A[11]; // в номере 11 цифр
и не забудьте записать '\0'
в конец строки.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Подскажите, что означает оператор расширения области видимости, который ставится перед идентификатором?
Хотел сверстать страницу, которая будет похожа на картинкуКак можно размещать элементы не по прямой линии, а по кривой?) чтобы можно было...
Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском