Некорректное отображение строки в терминале
Написал функцию которая возвращает только уникальные символы строки. Когда пытаюсь вывести в терминал – показывает какую-то дичь. Можете подсказать чо не так?
Я в C++ дня 4 от силы, и если функция полностью кривая то так и скажите. ?
#include <iostream>
#include <set>
std::string *get_unique(std::string *str){
const int str_size = (str->size()) - 1;
std::string unique_str;
std::set<char> unique_set;
for (int i = 0; i < str_size; i++){
unique_set.emplace((*str)[i]);
}
const int unique_set_size = unique_set.size();
for (int i = 0; i < unique_set_size - 1; i++){
unique_str += *std::next(unique_set.begin(),i);
}
std::string *punique_str = &unique_str;
return punique_str;
}
int main(){
std::string hello = "Hello, World";
std::cout << *get_unique(&hello);
return 0;
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Кроме того, что нельзя возвращать указатель на локальные переменные, вы выбрали несколько сложноватый путь решения своей задачи. Вот так будет попроще:
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
string get_unique(const string& str)
{
string res = str;
sort(res.begin(),res.end());
res.erase(unique(res.begin(),res.end()),res.end());
return res;
}
int main(){
string hello = "Hello, World";
cout << get_unique(hello);
}