strcpy c ++ не может преобразовать параметр 1 из строки char *

я пытаюсь поместить слова, которые есть в текстовом файле * в массив строк.
Но есть ошибка с strcpy (). это говорит: ‘strcpy’: невозможно преобразовать параметр 1 из ‘std :: string’ в ‘char *’. Это почему? Разве нельзя создать массив строк, подобных этому, в c ++?

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

void ArrayFillingStopWords(string *p);

int main()
{
string p[319];//lekseis sto stopwords
ArrayFillingStopWords(p);
for(int i=0; i<319; i++)
{
cout << p[i];
}
return 0;
}

void ArrayFillingStopWords(string *p)
{
char c;
int i=0;
string word="";
ifstream stopwords;
stopwords.open("stopWords.txt");
if( stopwords.is_open() )
{
while( stopwords.good() )
{
c = (char)stopwords.get();
if(isalpha(c))
{
word = word + c;
}
else
{
strcpy (p[i], word);//<---
word = "";
i++;
}
}
}
else
{
cout << "error opening file";
}
stopwords.close();
}

4

Решение

Я предлагаю strcpy (p[i], word); быть изменен на p[i] = word;, Это C ++ способ делать вещи и использует преимущества std::string оператор присваивания.

3

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

Вам не нужно strcpy Вот. Простое задание сделает это: p[i] = word;, strcpy предназначен для строк в стиле C, которые представляют собой массивы символов с нулевым символом в конце:

const char text[] = "abcd";
char target[5];
strcpy(target, text);

С помощью std::string означает, что вам не нужно беспокоиться о правильном размере массива или о вызове таких функций, как strcpy,

0

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