Заменить '.' на многоточие

Нужно заменить в массиве символов все встречающиеся точки на многоточие, нашел как это сделать для string, но нужно для char, можете помочь понять как это сделать?

#include <iostream>
#include <string>
using namespace std;
int main()
{
    int n;
    cin >> n;
    char *s = new char[n];
    for (int i = 0; i <= n; i++)
    {
        
        cin >> s[i];
        if (s[i] == '.') 
        {
        s.replace(i, 1, "...");
        }
        cout << s[i];
        
        }
        delete []s;
        return 0;
    
    }

Выводит:

14:11: error: request for member 'replace' in 's', which is of non-class type 'char*'


Ответы (1 шт):

Автор решения: Константин Николаевич Бояр II

Вообщем я думаю что проще было сделать через string, но есть вот такое решение для char с которым мне помогли.

#define UNICODE
#define _UNICODE // подключение кодировки UTF - 8 (вдруг пригодится)
#include <iostream>
#include <Windows.h>
#include <utility> 

std::pair<char*, size_t> replaceDotWithThree(char* s, size_t len) // создание функции
{
    using namespace std;
    size_t dots = count(s, s + len, '.'); // count() сравнивает каждый элемент со значением value в диапазоне, ограниченном парой итераторов [first,last)

    size_t new_len = len + dots * 2; // увеличиваем размер массива
    char* res = new char[new_len];
    for (size_t i = 0, j = 0; i < len; ++i) // замена '.' на '...'
    {
        res[j++] = s[i];
        if (s[i] == '.') {
            res[j++] = '.';
            res[j++] = '.';
        }
    }
    return { res, new_len };
}

int main() {
    using namespace std;
    // Input 
    size_t n;
    cin >> n;
    char* s = new char[n];
    for (size_t i = 0; i < n; ++i) cin >> s[i]; // заполнение массива который будем расширять

    // Processing 
    auto res = replaceDotWithThree(s, n);

    // Output 
    cout << "\n"; 
    char* out = res.first;
    size_t new_n = res.second;
    for (size_t i = 0; i < n; ++i) cout << out[i]; // вывод конечного массива
}
→ Ссылка