私はこのプログラムの次のブロックでこのエラーが頻繁に発生していますが、イテレータではありませんポインタこのような文字列データ型を使用すると、なぜ私は、関数strcatの引数として文字列にイテレータを渡すことができませんか()?
error: cannot convert 'std::basic_string<char>::iterator
{aka __gnu_cxx::__normal_iterator<char*, std::basic_string<char> >}'
to 'const char*' for argument '2' to 'char* strcat(char*, const char*)'
strcat(temp, str1.begin());
^
int areRotations(string str1, string str2)
{
int size1 = str1.length();
int size2 = str2.length();
char* temp= new char[size1+size2+1];
void *ptr;
if (size1 != size2)
return 0;
strcat(temp, str1.begin());
strcat(temp, str1.begin());
/* Now check if str2 is a substring of temp */
ptr = strstr(temp, str2);
if (ptr != NULL)
return 1;
else
return 0;
}
なぜ 'std :: string'で' strcat'を使用しますか?あるいは、なぜ、 'temp'が' std :: string'ではないのですか? –
イテレータはポインタではありません。ポインタはイテレータです。 – Simple
'str1.begin()'と 'C'ですか?どのくらい正確に? –