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 ());
わかりにくい説明ですみません(_ _)
助けてくれる方がいるととても有難いです。