我试图将用户输入限制为仅字母,然后以升序对所有字符进行排序。
构建消息 错误:没有匹配的函数可以调用'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));
}
答案 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);