으로 변환 할 수 없습니다. txt 파일에있는 단어를 문자열 배열에 넣으려고합니다. 그러나 strcpy()에 오류가 있습니다. itis : 'strcpy': 매개 변수 1을 'std :: string'에서 'char *'로 변환 할 수 없습니다. 왜 그런가요? C++에서 이와 같은 문자열 배열을 생성 할 수 있습니까?strcpy C++에서 매개 변수 1을 문자열 char *
#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();
}
정말 단어를 읽는 방법을 리팩터링하는 것이 좋습니다. 파일이 없으면 어떻게 될까요? 정말로 319 개의 빈 문자열을 표시 하시겠습니까? 당신은 항상 319 단어를 얻을거야 확신합니까? 왜 318 (또는 심지어 더 나쁜) 320? 'std :: vector'을 사용하여'C++ '로 만들고, 파일에서 문자형 읽기를 사용하지 않고 간단한'>>'을 사용하고 필요하다면 비 알파 문자로 분리하십시오 (텍스트 파일의 샘플 여기에 최선의 접근 방식을 제안하는 데 도움이 될 것입니다) –
stefan
파일은 확실히 존재합니다. 그것은 숙제의 일부입니다 :), 단어는 확실히 319입니다. 또한 txt 파일의 단어는 각 레인마다 하나씩 있습니다. –
큰 파일과 관련된 다음 연습이있을 수 있다고 상상해보십시오. 정말로 코드를 다시 작성 하시겠습니까? 아니요, 코드가 모든 종류의 파일에 대처할 수 있기를 바랍니다. 열쇠는 lazy_를 비싸지 만 그런 숫자를 하드 코딩하지 않아야합니다. – stefan