Как заменить символ в строке?

84
22 августа 2021, 20:00

Задача: Надо написать функцию который находит в строке цифры и заменяет их на десятичные коды. Например "aaa'6'xxx" на "aaa54xxx".

Я попробовал таким способом:

#include <iostream>
#define _CRTDBG_MAP_ALLOC 
#include <stdlib.h>
#include <crtdbg.h>  
#include <sstream>
#include <string>
using namespace std;

int main() {
    setlocale(LC_ALL, "rus");
    int asc,  pust; 
    char stroka[100];
    cin>> stroka; 
    int length = strlen(stroka);
    for (int i = 0; i < length; i++) {
        cout << stroka[i] << endl;
        if ('0' <= stroka[i] && stroka[i] <= '9') {
            asc = int(stroka[i]);
            cout << asc << endl;
    // Но, У меня не получается преобразовать int (asс) к char и 
    // заменить его. Можете подсказать как можно это реализовать?  
    // В моем случае надо цифру 54 преобразовать на char, и заменить с 
    // шестеркой
            pust = stroka[i];
            stroka[i] = asc;
            asc = pust;
        }
    }
    cout << stroka << endl;
    system("pause");    
    return 0;
}

Но, У меня не получается преобразовать int (asс) в char и заменить его. Можете подсказать как можно это реализовать?
В моем случае надо найти символ 6 и заменить на его десятичный код(54).

Answer 1

Это можно сделать намного проще, используя строковые переменные. Написал очень простенькую программу, которая проходит по заданной строке, и переписывает её в новую строку.Надеюсь, идею поняли)

#include<string>
#include<iostream>
using namespace std;
int main() {
    string stroka1;
    string stroka2;
    cin >> stroka1;
    for (int i = 0; i < stroka1.length(); i++) {
        if ('0' <= stroka1[i] && stroka1[i] <= '9') {
            stroka2 += to_string((int)stroka1[i]); //Если символ строки - цифра, то заменяем её     
        }
        else
            stroka2 += stroka1[i];// иначе просто переписываем то,что было
    }
    cout << stroka2;
    system("pause");
    return 0;
}
Answer 2

Пример как это сделать с помощью std::stringstream :

#include <sstream>
#include <string>
#include <iostream>
int main() 
{
    std::string stroka;
    std::stringstream ss;
    cin >> stroka; 
    for (int i = 0; i < stroka.size(); ++i) 
    {
        if(isdigit(stroka[i]))
        {
            ss << int(stroka[i]);
        }
        else
        {
            ss << stroka[i];
        }
    }
    std::cout << ss.str() << std::endl;
    return 0;
}
READ ALSO
Ошибка подключения клиента к серверу TCP/IP

Ошибка подключения клиента к серверу TCP/IP

не могу создать соединение между сервером и клиентом по tcp/ip на Linux MintКомпилирую через gcc

159
Почему значение возвращается либо в экспоненциальной форме, либо возвращается 0

Почему значение возвращается либо в экспоненциальной форме, либо возвращается 0

Первый вопрос: почему если не указать fixed значение вернется в экспоненциальной форме? Второй вопрос: почему если поставить fixed, то вернется...

73
Uncaught SyntaxError: Unexpected token &#39;}&#39; в блоке ajax()

Uncaught SyntaxError: Unexpected token '}' в блоке ajax()

Помогите понять почему в консоли ошибка Uncaught SyntaxError: Unexpected token '}'

186