я пытаюсь поместить слова, которые есть в текстовом файле * в массив строк.
Но есть ошибка с 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();
}
Я предлагаю strcpy (p[i], word);
быть изменен на p[i] = word;
, Это C ++ способ делать вещи и использует преимущества std::string
оператор присваивания.
Вам не нужно strcpy
Вот. Простое задание сделает это: p[i] = word;
, strcpy
предназначен для строк в стиле C, которые представляют собой массивы символов с нулевым символом в конце:
const char text[] = "abcd";
char target[5];
strcpy(target, text);
С помощью std::string
означает, что вам не нужно беспокоиться о правильном размере массива или о вызове таких функций, как strcpy
,