【问题标题】:cannot convert 'std::string {aka std::basic_string<char>}' to 'int' for argument '2' to 'std::string无法将参数 '2' 的 'std::string {aka std::basic_string<char>}' 转换为 'int' 到 'std::string
【发布时间】:2023-03-21 08:50:01
【问题描述】:

我正在尝试按字母顺序获取最小值。

这是我目前写的代码:

#include <iostream>
#include <string>
using namespace std;

void swap(string[], int i, int j);
string displayArray(string[], int size);
string findMin(string[] , int size);

int main()
{
    string themin;
    int size;
    string A[7] = { "MBA", "ME", "Psy", "EE", "CS", "CE", "Bio" };
    for (int i = 0; i < 7; i++)
    {
        cout << A[i]<<" ";
    }
    cout << endl;
    swap(A, 1, 4);

    for (int i = 0; i < 7; i++)
    {
        cout << A[i] << " ";
    }
    findMin(A, themin);
    cout<< themin << endl;

}

void swap(string A[], int i, int j)
{
    string temp = A[i];
    A[i] = A[j];
    A[j] = temp;
}

string findMin(string A[] , int size)
{
    string themin = A[0];
    for(int i = 1; i < size; i ++)
    {
        if(A[i].compare(themin) < 0)
            themin=A[i];
    }
    return themin;
}

我收到此错误,但不明白如何解决:

25:26:错误:无法将参数“2”的“std::string {aka std::basic_string}”转换为“int”到“std::string findMin(std::string*, int)'

【问题讨论】:

  • 错误是不言自明的。您正在传递 std::string ,其中预期 int 。您将themin 变量(string)传递给size 参数(int)。在传递 themin(或 size 变量,就此而言)之前,您甚至没有为它分配任何值。这段代码是乱码,你到底想用它来完成什么?
  • 因为您要传递一个字符串,而该字符串需要一个 int?您的函数 findMin(...) 接受一个字符串数组和一个 int。你已经放了一个字符串数组,然后是一个字符串
  • 我该如何解决这个问题?这是老师写给课堂的。我必须按字母顺序找到最小值。
  • 假设您的任务不是解决他们的无意义代码,只需联系他们并告诉他们他们的代码没有构建。
  • 使用 STL:std::array + std::swap + std::min_element = 完成!

标签: c++ arrays string


【解决方案1】:

替换这两行:

findMin(A, themin);
cout<< themin << endl;

与:

themin = findMin(A, sizeof A / sizeof A[0]);
cout << endl << themin << endl;

【讨论】:

    猜你喜欢
    • 2017-03-10
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 2014-07-13
    • 2015-04-28
    • 1970-01-01
    • 1970-01-01
    • 2021-10-28
    相关资源
    最近更新 更多