LINUX.ORG.RU

Сравнение строки с шаблоном посимвольно и вернуть результат

 , , ,


0

1
#include <iostream>
#include <string.h>
#include <string>

using std::string;
using std::cout;
using std::cin;
using std::endl;

int main()
{
    string main_str     = "Test 2 string 1 ";
    string template_str = "Test   string   ";
    string temporary_str = "";

    for(std::string::size_type i = 0; i < template_str.size(); ++i) { // сравниваем в цикле посимвольно
         if (main_str[i] != template_str[i]){ // если не равно
             std::string str1(main_str[i]); // преобразуем в строку и
             temporary_str.append(str1); // добавляем во временную переменную
         }

    }

    cout << temporary_str << endl; // вывод
    return 0;
}

Ошибка invalid conversion from char to const char*

Что ж такое с этим преобразованием типов в C++?

★★★★★

Последнее исправление: sniper21 (всего исправлений: 1)
std::string main_str     = "Test 2 string 1 ";
            std::string template_str = "Test   string   ";
            std::string temporary_str = "";

            for(std::string::size_type i = 0; i < template_str.size(); ++i) { // сравниваем в цикле посимвольно
                 if (main_str[i] != template_str[i]){ // если не равно
                     //std::string str1(main_str[i]); // преобразуем в строку и
                     temporary_str.push_back(main_str[i]); // добавляем во временную переменную
                 }

            }

            std::cout << temporary_str << std::endl; // вывод
xperious ★★
()

Добавлю ещё то что в цикле нужно проверять условия невыхода для обоих строк...

#include <iostream>  // for endl, basic_ostream, cin, cout, ostream
#include <string>    // for string, operator<<
#include <ciso646>   // for and

using std::string;
using std::cout;
using std::cin;
using std::endl;

int main()
{
    string main_str     = "Test 2 string 1 ";
    string template_str = "Test   string   ";
    string temporary_str = "";

    for(string::size_type i = 0; i < template_str.size() and i < main_str.size(); ++i) { // сравниваем в цикле посимвольно
         if (main_str[i] != template_str[i]){ // если не равно
             temporary_str.push_back(main_str[i]); // добавляем во временную переменную
         }

    }

    cout << temporary_str << endl; // вывод
    return 0;
}

fsb4000 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.