電子書籍の厳選無料作品が豊富!

wchar_t cOrg[128]と宣言している変数にstringで宣言しているstrを

cOrg[i] = str[i];

このように代入することはできたのですが、
char cAns[ 128 ];

このように宣言した変数の値をstrの41番目と42番目に
次のように入れようとするとエラーが出ます。

str[41]=cAns[1];
str[42]=cAns[2];

(エラー内容)
\Form1.h(428): error C2664: 'System::String::String(wchar_t,int)' : 1 番目の引数を 'wchar_t [128]' から 'wchar_t' に変換できません。(新しい機能 ; ヘルプを参照)


このような代入はできないのでしょうか?


プログラムの詳細は下のようなものです。



wchar_t cOrg[128],*p;
String^ str;
String^ str2;

int i;
int iVal1,iVal2,iTotal = 0,iHosu;
char cAns[ 128 ];


str = this->textBox1->Text;

for(i=0;i<41;i++)
{
cOrg[i] = str[i];

}

-------(中略)------------------------------------------

iHosu = ~iTotal; // 1の補数
iHosu++; // +1
iHosu = iHosu & 0x00FF;
sprintf( cAns, "%s%02X%c", cOrg, iHosu, 0x22 );
str[41]=cAns[1];
str[42]=cAns[2];

A 回答 (3件)

http://msdn.microsoft.com/ja-jp/library/system.s …

の解説に書かれてますが、System::String の内容は変更できません。
System::Text::StringBuilder なら

str[41]=cAns[1];

のような操作が可能なので

System::Text::StringBuilder ^str = gcnew System::Text::StringBuilder(this->textBox1->Text);
・・・
str[41]=cAns[1];
str[42]=cAns[2];
this->textBox1->Text = str->ToString();

のようにするといいのではないでしょうか。
    • good
    • 0

> str[41]=cAns[1];



System::Stringはインデックサsetをもってないので、そもそも代入できないのでは。
拡張メソッドを使っていれば、別の話ですが。
    • good
    • 0
この回答へのお礼

回答頂きありがとうございます。助かります。

お礼日時:2012/04/09 18:50

中身が素直な char* じゃないからじゃない?



一応探したらこんなの出てきたけど 参考になれば。
http://support.microsoft.com/kb/311259/ja
    • good
    • 0
この回答へのお礼

回答頂きありがとうございます。参考にさせて頂きます。

お礼日時:2012/04/09 18:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!