Сортировать массив символов с помощью функции сортировки c ++ - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь ограничить ввод пользователя только алфавитом, а затем отсортировать все символы в порядке возрастания.

ошибка создания сообщений: нет соответствующей функции для вызова 'std :: __ cxx11 :: basic_string :: basic_string (char &)'

Это мой заголовок

#include <iostream>
#include <string.h>
#include <conio.h>
#include <stdio.h>
#include <regex>

Должен ли я преобразовать символ в строку, а затем преобразовать обратно в символ для моего следующего кода?

string Sortstr (str[mlength]);
sort(Sortstr.begin(), Sortstr.end());

получить эту ошибку 2 строки.

int mlength = 100;
int main() {
    char str[mlength];
    int length;

    cout << "Please enter a c-string: ";
    cin.getline(str,mlength,'\n');
    regex pass1("^[a-zA-Z]+");
    while(!regex_match(str,pass1)) {
         cout<<"Error"<<endl;
         cout << "Please enter a c-string: ";
         cin.getline(str,mlength,'\n');
    }
    string Sortstr (str);
    sort(str, str + strlen(str));
}

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

В этой строке

string Sortstr (str[mlength]);

вы используете оператор индекса для массива символов, который дает вам один символ.Итак, вы передаете один символ в строковый конструктор.Этот конструктор не существует, следовательно, ошибка.Даже если он существует, вы не хотите передавать один символ, а весь массив символов.

То, что вы хотите, это:

string Sortstr (str);
0 голосов
/ 19 сентября 2018

Почему бы просто не отсортировать str?

sort(str, str + strlen(str));

Нет причин, по которым вы не можете сортировать массив напрямую.Просто передайте указатели на первый и один за другим элементы вашего массива на sort.В этом случае добавление strlen возвращает указатель на эффективный конец вашего массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...