gpt4 book ai didi

c++ - 结构数组中按字母顺序排序的问题气泡

转载 作者:行者123 更新时间:2023-11-30 05:45:18 25 4
gpt4 key购买 nike

当尝试对存储在结构数组中的库存进行冒泡排序时,我在编译以下代码时遇到了两个不同的错误:

void SORT_INVENTORY(Books* list, int max, int position)
{
bool swap;
string temp;

do
{
swap = false;
for (int count = 0 ; count < (position - 1) ; count++)
{
if ( tolower(list[count].Title) > tolower(list[count + 1].Title))
{
temp = list[count];
list[count] = list[count + 1];
list[count + 1] = temp;
swap = true;
}
}
} while (swap);

我希望使用 tolower 来比较两个结构数组的 Title 元素。但是,编译器不允许我运行该程序,因为它说没有匹配的函数来调用 tolower

当我将 if 语句切换为:

if ( ::tolower(list[count].Title) > ::tolower(list[count + 1].Title)) 

“无匹配函数”消息消失但被新的消息取代:没有从“string”(又名“basic_string,分配器>”)到“int”的可行转换

最后,我在 if 语句的主体中得到了一条关于语句的一致错误消息,指出 no viable overloaded '=' in temp = list[count]list[count + 1] = temp.

最后一个细节:列表是声明为结构数据类型的数组。我做错了什么?

最佳答案

  1. tolower 适用于单个字符,而不是字符串。查看How to convert std::string to lower case?
  2. 您正在尝试将 Book 分配给 string(反之亦然)。更改 temp 的类型。

关于c++ - 结构数组中按字母顺序排序的问题气泡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29448933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com