как решить ошибку статуса выхода 1?

Я хочу написать код C ++, который будет отделять все элементы, которые имеют одинаковую длину как входное значение

#include <iostream>
#include <vector>
using namespace std;
string database[] = {"green", "stupid", "boy", "girl", "forest", "mobile", "morning", "love", "keyboard", "incredible"};
string input;
string count(string input, string database[]){
string lengthFilter[] = {};
int inputLength = input.length();
for (int i = 0; i < database->length(); ++i){
if (database[i].length() == inputLength)
{
lengthFilter[lengthFilter->length()] = database[i];

}
}
return (lengthFilter);
}

int main()
{
cin >> input;
cout << count(input, database);
return 0;
}

но это дает ошибку

main.cpp: In function 'std::__cxx11::string count(std::__cxx11::string, std::__cxx11::string*)':
main.cpp:16:22: error: could not convert 'lengthFilter' from 'std::__cxx11::string [0] {aka std::__cxx11::basic_string<char> [0]}' to 'std::__cxx11::string {aka std::__cxx11::basic_string<char>}'
return (lengthFilter);
^

exit status 1

Я не могу найти свою ошибку, пожалуйста, помогите мне.

-3

Решение

Вы столкнулись с недостатками встроенных массивов C ++ и [] синтаксис. Это:

[]

Не всегда означает, что вы думаете, что это значит. Его значение зависит от контекста. В декларациях:

string database[] = // ...

Это означает, что вы объявляете встроенный массив. Однако в аргументах функции:

string count(string input, string database[])

это указатель Вышеуказанная строка эквивалентна:

string count(string input, string* database)

Также обратите внимание, что это:

string lengthFilter[] = {};

Объявляет встроенный массив нулевого размера. Я не думаю, что это то, что вы хотите, поскольку встроенные массивы имеют фиксированный размер. Они не меняют размер.

Так что вы должны делать здесь, это использовать std::vector вместо:

#include <iostream>
#include <vector>

using namespace std;

vector<string> database = {
"green", "stupid", "boy", "girl", "forest", "mobile", "morning", "love",
"keyboard", "incredible"};

string input;

vector<string> count(string input, const vector<string>& database)
{
vector<string> lengthFilter;
auto inputLength = input.length();
for (const auto& i : database) {
if (i.length() == inputLength) {
lengthFilter.push_back(i);
}
}
return lengthFilter;
}

int main()
{
cin >> input;
for (const auto& i : count(input, database)) {
cout << i << '\n';
}
return 0;
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]