После очистки (см. Комментарии) это, кажется, работает нормально.
#include <string>
#include <iostream>
std::string sort(const std::string &text)
{
std::string toSort = text;
for (int i = 0; i < (int)(toSort.size()) - 1; i++)
{
if (toSort.at(i) > toSort.at(i + 1))
{
char temp = toSort.at(i + 1);
toSort.at(i + 1) = toSort.at(i);
toSort.at(i) = temp;
i = -1;
}
}
std::cout << "Sorted: " << toSort << std::endl;
return toSort;
}
int main()
{
sort("fgfghafbkgdbGHKGHjbkgfnvnbjb14563f");
sort("X");
sort("");
return(0);
}
Сортировка: 13456GGHHKabbbbbdfffffgggghjjkknnv
Сортировка: X
Сортировка:
Кстати: необходимо явное приведение (int) (toSort.size ()), поскольку пустая строка нарушит условие. По крайней мере, в моей системе это привело бы к «i <size_t (-1)», который вызывает std :: out_of_range. Может быть, что-то в этом роде вызвало у тебя бесконечность?