gpt4 book ai didi

c++ - 按字母顺序对字符串数组排序的问题

转载 作者:太空宇宙 更新时间:2023-11-04 15:27:28 26 4
gpt4 key购买 nike

在点燃火炬之前,我正在尝试自学C ++。我觉得我已经掌握了它,但是如果您知道我的意思,我就必须深入了解。我正在尝试调试一个简单的程序以使其自学。该程序的目标是按字母顺序对要打印的字符串数组进行排序。当将数组传递给我的length()函数时,我可能应该在这里使用指针,但是我还没走那么远。有这么多错误,我不确定错误实际上在哪里。请告诉我,这有点像缺少分号。我非常确定if(itemsToSort [j]
main.cpp:

#include <iostream>
#include "stringarray.h"

void output (int sortedItems) {
for (int i = 0; ; i++) {
std::cout << sortedItems[i] << std::endl;
}
}

int main (int argc, char * const argv[]) {
std::string itemsToSort[] = {
'bob', 'john', 'tyler', 'anthony', 'luke', 'eric'
};
std::string sortedItems[length(itemsToSort)];
string firstInAZOrder;

for (int i = 0; i < length(itemsToSort); i++) {
firstInAZOrder = itemsToSort[i];

for (int j = i + 1; j < length(itemsToSort); j++) {
if (itemsToSort[j] < firstInAZOrder) {
firstInAZOrder = itemsToSort[j];
}
}

sortedItems[i] = firstInAZOrder;
}

output(sortedItems);
return 0;
}


stringarray.cpp:

int length (std::string array) {
return sizeof(array) / sizeof(array[0]);
}


stringarray.h:

int length (std::string array);


这是Xcode给我的错误和警告列表:


/Users/Tyler/Desktop/sort/main.cpp:12:3:警告:多字符字符常量-
/Users/Tyler/Desktop/sort/main.cpp:12:18:警告:字符常量的类型太长
/Users/Tyler/Desktop/sort/main.cpp:12:27:警告:字符常量的类型太长
/Users/Tyler/Desktop/sort/main.cpp:在函数'void output(int)'中:
/Users/Tyler/Desktop/sort/main.cpp:6:错误:数组下标的类型'int [int]'无效
/Users/Tyler/Desktop/sort/main.cpp:在函数'int main(int,char * const *)'中:
/Users/Tyler/Desktop/sort/main.cpp:13:错误:从'int'到'const char *'的无效转换
/Users/Tyler/Desktop/sort/main.cpp:13:错误:初始化了'std :: basic_string <_CharT,_Traits,_Alloc> :: basic_string(const _CharT *,const _Alloc&)的参数1 [with _CharT = char, _Traits = std :: char_traits,_Alloc = std :: allocator]'
/Users/Tyler/Desktop/sort/main.cpp:13:错误:从'int'到'const char *'的无效转换
/Users/Tyler/Desktop/sort/main.cpp:13:错误:初始化了'std :: basic_string <_CharT,_Traits,_Alloc> :: basic_string(const _CharT *,const _Alloc&)的参数1 [with _CharT = char, _Traits = std :: char_traits,_Alloc = std :: allocator]'
/Users/Tyler/Desktop/sort/main.cpp:13:错误:从'int'到'const char *'的无效转换
/Users/Tyler/Desktop/sort/main.cpp:13:错误:初始化了'std :: basic_string <_CharT,_Traits,_Alloc> :: basic_string(const _CharT *,const _Alloc&)的参数1 [with _CharT = char, _Traits = std :: char_traits,_Alloc = std :: allocator]'
/Users/Tyler/Desktop/sort/main.cpp:13:错误:从'int'到'const char *'的无效转换
/Users/Tyler/Desktop/sort/main.cpp:13:错误:初始化了'std :: basic_string <_CharT,_Traits,_Alloc> :: basic_string(const _CharT *,const _Alloc&)的参数1 [with _CharT = char, _Traits = std :: char_traits,_Alloc = std :: allocator]'
/Users/Tyler/Desktop/sort/main.cpp:13:错误:从'int'到'const char *'的无效转换
/Users/Tyler/Desktop/sort/main.cpp:13:错误:初始化了'std :: basic_string <_CharT,_Traits,_Alloc> :: basic_string(const _CharT *,const _Alloc&)的参数1 [with _CharT = char, _Traits = std :: char_traits,_Alloc = std :: allocator]'
/Users/Tyler/Desktop/sort/main.cpp:13:错误:从'int'到'const char *'的无效转换
/Users/Tyler/Desktop/sort/main.cpp:13:错误:初始化了'std :: basic_string <_CharT,_Traits,_Alloc> :: basic_string(const _CharT *,const _Alloc&)的参数1 [with _CharT = char, _Traits = std :: char_traits,_Alloc = std :: allocator]'
/Users/Tyler/Desktop/sort/main.cpp:14:错误:请求从'std :: string *'转换为非标量类型'std :: string'
/Users/Tyler/Desktop/sort/main.cpp:15:错误:未在此范围内声明“字符串”
/Users/Tyler/Desktop/sort/main.cpp:15:错误:预期为`;'在“ firstInAZOrder”之前
/Users/Tyler/Desktop/sort/main.cpp:17:错误:请求从'std :: string *'转换为非标量类型'std :: string'
/Users/Tyler/Desktop/sort/main.cpp:18:错误:未在此范围内声明“ firstInAZOrder”
/Users/Tyler/Desktop/sort/main.cpp:20:错误:请求从'std :: string *'转换为非标量类型'std :: string'
/Users/Tyler/Desktop/sort/main.cpp:26:错误:未在此范围内声明“ sortedItems”
/Users/Tyler/Desktop/sort/main.cpp:29:错误:未在此范围内声明“ sortedItems”
/Users/Tyler/Desktop/sort/stringarray.cpp:10:错误:“ string”不是“ std”的成员
/Users/Tyler/Desktop/sort/stringarray.cpp:10:错误:预期为','或';'在“ {”令牌之前

最佳答案

首先:

std::string itemsToSort[] = {
'bob', 'john', 'tyler', 'anthony', 'luke', 'eric'
};


引号(')仅可用于单个字符。
为此,请使用双引号(“):

std::string itemsToSort[] = {
"bob", "john", "tyler", "anthony", "luke", "eric"
};


下一个:

void output (int sortedItems) {
for (int i = 0; ; i++) {
std::cout << sortedItems[i] << std::endl;
}
}


该函数采用单个整数,这根本不是您想要的。假设您想学习如何使用指针,可以尝试如下操作:

void output (int* intArray, int arraySize) {
for (int i = 0; i < arraySize; ++i) {
std::cout << intArray[i] << std::endl;
}
}


该函数将指针指向内存中一定数量的整数及其中的整数。这解决了知道您的 for循环何时终止的下一个问题。

在实际代码中,您将使用 std::vector之类的内容代替 int*

关于c++ - 按字母顺序对字符串数组排序的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5265565/

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