【问题标题】:how to solve exit status 1 error?如何解决退出状态1错误?
【发布时间】:2018-02-04 16:31:23
【问题描述】:

我想编写 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

我找不到我的错误,请帮助我。

【问题讨论】:

  • 编译器错误信息的哪些字符你不明白?
  • lengthFilter 是一个字符串数组,你需要返回一个字符串或者改变你的count函数的签名。
  • 您的问题的标题具有误导性。 exit status 1 将出现在编译器检测到的任何错误上。另外,为什么要使用 std::string 的原始数组?请改用std::vector&lt;std::string&gt;

标签: c++ arrays function compiler-errors exitstatus


【解决方案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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-29
    • 1970-01-01
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多