ファイルから読み取り、ファイルstrtok()
から取得した文字列を分割するために使用しようとしています。問題は、プログラムをコンパイルするたびにこのエラーが発生し続けることです。
source.cpp: In function ‘int main(int, char**)’:
source.cpp:39:32: error: no matching function for call to ‘getline(char [1000], int, char)’
source.cpp:39:32: note: candidates are:
/usr/include/stdio.h:675:20: note: __ssize_t getline(char**, size_t*, FILE*)
/usr/include/stdio.h:675:20: note: no known conversion for argument 1 from ‘char [1000]’ to ‘char**’
/usr/include/c++/4.6/bits/basic_string.h:2734:5: note: template<class _CharT, class _Traits, class _Alloc> std::basic_istream<_CharT, _Traits>& std::getline(std::basic_istream<_CharT, _Traits>&, std::basic_string<_CharT, _Traits, _Alloc>&)
/usr/include/c++/4.6/bits/basic_string.tcc:1070:5: note: template<class _CharT, class _Traits, class _Alloc> std::basic_istream<_CharT, _Traits>& std::getline(std::basic_istream<_CharT, _Traits>&, std::basic_string<_CharT, _Traits, _Alloc>&, _CharT)
これが問題を引き起こしている私のコードの部分です。
char *p, line[1000], opcode[9], arg1[256], arg2[256];
int i = 0;
while(getline(line, 1000, '\n') != NULL)
{
line[strlen(line)-1] = '\0';
cout << "Line = " << line << endl;
if (strchr(line, '#'))
{
*p = '\0';
}
if (p = strtok(line, "\t"))
strcpy(opcode,p);
if (p = strtok(NULL, "\t"))
strcpy(arg1,p);
if (p = strtok(NULL, "\t"))
strcpy(arg2,p);
printf("opcode=:%s: arg1=:%s: arg2=:%s:\n",opcode,arg1,arg2);
}
私が得ることができるどんな助けにも感謝します。ありがとうございました。