Hellow我是C ++编程的初学者。
我正在研究qsort和交换。最近,我有一个关于计算机编程的问题。
protected override void OnManipulationBoundaryFeedback(ManipulationBoundaryFeedbackEventArgs e)
{
Debug.WriteLine("OnManipulationBoundaryFeedback");
}
private void MyControl_ManipulationBoundaryFeedback(object sender, ManipulationBoundaryFeedbackEventArgs e)
{
Debug.WriteLine("MyControl_ManipulationBoundaryFeedback");
}
但是这个程序只放了价值(在// aaabbcceefg之后// abc bbc lol fager之前......)
Q1。我想安排“Word”。使用frist字母(apple-> a)并按字母顺序排列。
示例(intput :: abc,ckk,dcd - > program - > output :: abc,ckk,dcd)
我不希望这个值“abcccddkk”...
我该怎么办?:( ...
答案 0 :(得分:0)
您有一个字符串,而不是一个字符串数组。
尝试声明work
,而不是 * :
const char* work[] = {"abc", "bbc", "lol", "faker"};
接下来,您的比较函数应该使用strcmp
,因为我们需要字符串的字典比较(<
上的const char*
运算符将比较内存地址而不是字符串的内容。)
使用此:
int arrange(const void* a, const void* b)
{
const char* p = *(const char**)a;
const char* q = *(const char**)b;
return std::strcmp(p, q);
}
最后,对qsort
的调用需要元素的数量,然后是每个元素的大小,将其更改为:
std::qsort(work, 4, sizeof(void*), &arrange);
*否则你需要用空格来标记字符串以使它们在数组中
免责声明:使用更现代的C ++可以更轻松地完成这一切 **
C ++ 11解决方案会在std::sort vector(或array} std::string上使用Better Demo:
std::vector<std::string> words {"abc", "bbc", "lol", "faker"};
std::sort(words.begin(), words.end());
**当范围标准化时,它可能会变得更好