使用排序功能C ++对char数组进行排序

时间:2018-09-19 09:52:32

标签: c++ arrays string templates char

我试图将用户输入限制为仅字母,然后以升序对所有字符进行排序。

构建消息 错误:没有匹配的函数可以调用'std :: __ cxx11 :: basic_string :: basic_string(char&)'

这是我的标题

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

我应该将char转换为字符串,然后将以下代码转换回char吗?

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 :(得分:3)

为什么不只对str进行排序?

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

没有理由不能直接对数组排序。只需将指向数组的第一个和最后一个元素的指针传递到sort。在这种情况下,添加strlen会得到一个指向数组有效端的指针。

答案 1 :(得分:2)

在这一行

string Sortstr (str[mlength]);

您正在对char数组使用index运算符,该数组给您一个char。因此,您将一个char传递给字符串构造函数。该构造函数不存在,因此会出现错误。即使它存在,您也不想传递一个char而是传递整个char数组。

您想要的是什么

string Sortstr (str);