如何解决退出状态 1 错误?
how to solve exit status 1 error?
我想编写 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
我找不到我的错误,请帮助我。
您深入了解了内置 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;
}
我想编写 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
我找不到我的错误,请帮助我。
您深入了解了内置 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;
}