strcpy c ++无法从字符串char *转换参数1

时间:2013-04-14 15:17:43

标签: c++ strcpy

我试图将txt文件中的单词放入字符串数组中。 但是strcpy()有一个错误。它是sais:'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();
}

2 个答案:

答案 0 :(得分:3)

我建议将strcpy (p[i], word);更改为p[i] = word;。这是C ++的处理方式,并利用std::string赋值运算符。

答案 1 :(得分:0)

此处您不需要strcpy。一个简单的任务就是这样做:p[i] = word;strcpy用于C风格的字符串,它是以空字符结尾的字符数组:

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

使用std::string表示您不必担心正确调整数组的大小,也不必担心调用strcpy等函数。