错误无法转换&#39; std :: string {aka std :: basic_string <char>}&#39;去#char;&#39;在任务中 - C ++

时间:2015-10-02 13:10:56

标签: c++ string function c++11 struct

所以我在代码行中得到了上面提到的错误: &#34;女性[count_wc] =(临时);&#34; [错误]无法转换&#39; std :: string {aka std :: basic_string}&#39;去#char;&#39;在赋值 - C ++

位于被调用函数内部。

同样在实际调用函数的位置发现了另一个错误。错误在 &#34; get_comp_women(women,MAX_W,array,ROW);&#34;是 [错误]无法转换&#39;(std :: string *)(&amp; women)&#39;来自&#39; std :: string * {aka std :: basic_string *}&#39; to&#39; std :: string {aka std :: basic_string}&#39;

const int MAX_W = 18;
const int MAX_T = 18;
const int MAX_E = 14;
const int ROW = 89;

using namespace std;

struct data
{
    string name;
    string event;
};


void get_comp_women(string women, int MAX_W, data array[], int ROW)
{
    int count_wc = 0;
    int count_wn = 0;
    int event_occ = 0;

    string temp;

    temp = (array[0].name);
    event_occ = (ROW + MAX_W);


    for (int i = 1; i < event_occ; i++)
    {
        if (temp == array[count_wn].name)
        {
            women[count_wc] = (temp);
            count_wn++;
        }
        else
        {
            temp = array[count_wn].name;
            count_wc++;
        }
    }

int main()
{
    string women[MAX_W];
    data array[ROW];
    get_comp_women(women, MAX_W, array, ROW);
}

2 个答案:

答案 0 :(得分:3)

您的函数接受women作为std::string,而您需要一个数组,因此,函数women[count_wc]内部意味着“字符串中的字符”,而不是“字符串数组中的字符串” “

women[count_wc] = (temp);
\____________/    \____/
   ^                 ^-----std::string   
   ^--- one character in the string

您需要更改功能签名,使其接受std::string[]而不是std::string

void get_comp_women(string women[], int MAX_W, data array[], int ROW)

你得到的第二个错误是非常明显的,并且意味着这一点(尝试将数组传递给等待字符串的函数)。

答案 1 :(得分:0)

void get_comp_women(string women, int MAX_W, data array[], int ROW)

应该成为

void get_comp_women(string women[], int MAX_W, data array[], int ROW)

函数的调用和它内部的逻辑都需要一个数组。