Делаю функцию, преобразовывающую номер из номера из "+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'
в конец строки.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Подскажите, что означает оператор расширения области видимости, который ставится перед идентификатором?
Хотел сверстать страницу, которая будет похожа на картинкуКак можно размещать элементы не по прямой линии, а по кривой?) чтобы можно было...
Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском