如何安排单词使用qsort和string?

时间:2017-10-06 14:48:11

标签: c++ qsort

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”...

我该怎么办?:( ...

1 个答案:

答案 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);

Live Demo

*否则你需要用空格来标记字符串以使它们在数组中

免责声明:使用更现代的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());

{{3}}

**当范围标准化时,它可能会变得更好