- 締切済み
C++のnew演算子で動的確保
new()を初めて使ってみました。 エラーは無かったけど、間違いがあったら教えてください。 #include <iostream.h> main(){ int n = 0; char* str = "mojisuufumei"; char* myValue; while(!str[n])n++; myValue = new char[n+1]; strcpy(myValue, str); cout << myValue; delete []myValue; } char*型のmyValueを動的確保したつもりです。 myValue[0], myValue[1], … のそれぞれの値を unsignedにして宣言したい場合はどうしたらいいんですか? #include <iostream.h> main(){ int n = 0; char* str = "mojisuufumei"; unsigned char* myValue; while(!str[n])n++; myValue = new unsigned char[n+1]; strcpy(myValue, str); cout << myValue; delete []myValue; } だと、strcpy()のとこでコンパイルエラーでした。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Esna
- ベストアンサー率36% (4/11)
こんにちは.Esnaです. キャストしてもだめでしたか? (あんまりいい方法では,ありませんが…) だめなら,strcpy()関数ライクな関数を自分で作る のも手だと思いますけど.
- Esna
- ベストアンサー率36% (4/11)
こんにちは.Esnaです. newの使い方としては,いいのではないでしょうか. strcpy()のエラーは,strcpyの第1引数の型が,char *型を要求しているので発生しているのだと思います. 無理やり変数をchar *にキャストすれば,コンパイラは通るとは思います. あとは,strcpy()を使うならstring.hをincludeしておいたほうがいいでしょう.(namespace使ってcstringでもいいです.)普通はしておかないとエラーになりますが,iostream.hの中のどこかでincludeされている場合もあるのでそのときは,普通に実行できますけどね.
お礼
ありがとうございます。変なところをキャストしていました。 strcpy(myValue, str);をキャストしてできました。
補足
strcpy() に関してのincludeは問題なかったです。 でも、まだunsignedにすることができません。