C++初心者の者です。
宿題や仕事ではないのですが、個人的な実験で、VisualC++でC++のstringからC stringへのタイプ変換をしようといろいろ試みているのですが、うまくいきません。以下のやり方で試してみましたが、どれも駄目でした。
どうすればよいでしょうか…?
また、std::stringとconst char*の違いは何なのでしょうか?以下のコードのエラーを見て頂けるとお分かりになるかと思うのですが、最初に=とc_str()を使ったときには、stringがconst char*型なので、char*型であるC stringには変換できないとエラーが出ました。なので次はconst char*型のパラメータを受け取るstrcpy関数を試してみたのですが、今度は、stringがstd::string型なので、const char*には変換できないというエラーが出ました…。
string cplString = "aaaa"; char* cStr; cStr =(cplString.c_str());//これだと、cannot convert from 'const char *' to 'char *' というエラー。 strcpy(cStr, cplString);//これは、cannot convert parameter 2 from 'std::string' to 'const char *'というエラー。 上二つが駄目だったので、クラス(あまりよくわかっていないのですが…)を使ってみました。これだけはコンパイルはしたのですが、実行中にstrcpyから先へ進めません…。 class cStrMaker { public: cStrMaker::cStrMaker(const char* a) { strcpy(cStr,a);//bad pointer cStrというエラー。 } cStrMaker::~cStrMaker(void) { } private: char* cStr; }; std::string strStdString ("Hello!"); cStrMaker cString(strStdString.c_str ());
わかりにくい説明ですみません(_ _)
助けてくれる方がいるととても有難いです。