4

我正在尝试将 txt 文件*中的单词放入字符串数组中。但是 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

2 回答 2

3

建议strcpy (p[i], word);改成p[i] = word;. 这是 C++ 的做事方式,并利用了std::string赋值运算符。

于 2013-04-14T15:34:35.870 回答
0

你不需要strcpy这里。一个简单的任务就可以做到:p[i] = word;. strcpy用于 C 风格的字符串,它们是以 null 结尾的字符数组:

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

使用std::string意味着您不必担心数组的大小是否正确,或者调用诸如strcpy.

于 2013-04-14T15:38:22.590 回答