Как сортировать строку?
подскажите как можно отсортировать слова по алфавиту в строке (char words[255]).Прошу прошения если вопрос глупый .
Ответы (3 шт):
Автор решения: Yuri Vorobev
→ Ссылка
Самый простой способ: использование библиотеки algorithm:
#include <string>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
string str = "hgnfasdsd";
sort(begin(str), end(str));
cout << str; //addfghnss
return 0;
}
Автор решения: Harry
→ Ссылка
Ну, например, так:
char words[255] = "hsdvj sdfh euwru jcsjk afgfc fjk";
istringstream is(words);
vector<string> p;
for(string s; is >> s; ) p.push_back(s);
sort(p.begin(),p.end());
for (auto s : p) cout << s << " ";
Если позарез надо вернуть ту же строку - пересобираем ее:
words[0] = 0;
for (auto s : p)
strcat(words, (s+" ").c_str());
cout << words;
Автор решения: Zhihar
→ Ссылка
если у вас char words[255] - это строка внутри которой содержатся слова, то надо
предварительно разбить строку на массив слов
отсортировать массив (например, с использованием стандартной функции
std::sort)собрать отсортированный массив в строку через разделитель
т.е. как-то так:
// разбить строку на слова
std::istringstream iss(str);
std::vector<std::string> words((std::istream_iterator<std::string>(iss)), std::istream_iterator<std::string>());
// отсортировать слова
std::sort(std::begin(words), std::end(words));
// собрать строку из слов
std::string result = std::accumulate(std::begin(words), std::end(words), std::string(),
[](const std::string& a, const std::string& b) -> std::string {
return a + " " + b;
} )