2017-05-22 17 views
-1

テキストボックスのすべての文字が数字であると仮定して、テキストボックスを整数配列に変換しようとしています。数字のC++/cliでテキストボックスを整数配列に変換する方法

//textbox is named input 
int size = this->input->Text->Length; 
int * num = new int[size]; 
int Counter = 0; 

//for loop used since textbox inputs like a calculator 
//Ex: the number: 234 is inputed: 2, then 23, then 234 
for (int i = size; i > 0; i--) 
{ 
    num2[Counter] = System::Convert::ToInt32(input->Text[i-1]); 
    Counter += 1; 
} 

アレイは次のようになります。

num[0] = 4, num[1] = 3, num[2] = 2 

研究したら、それではなく、整数Unicode値を見つけることだと思われても。

+1

おそらくinput-> Text [i]を介して、テキストボックス文字を反復処理する必要があります。しかし、私はサイズ1から0に移動する必要があります。 –

+0

@MalcolmMcLean:ベストではない、またはあなたのループは永遠に実行されます。私が決して使用されないので、それは問題ではないという事実を無視すれば、OPは正しいことです。 –

+1

これはC++ではなく、C++/CLIです。類似の名前にもかかわらず、C++とは異なる*言語です。さらに、C++/CLIはGUI開発ではなく、「相互運用シナリオ」を対象としています。代わりにC +を検討してください。 –

答えて

0

コードinput->Text[i-1]は、wchar_tタイプの単一のUnicode文字値を返します。これは暗示的にInt32に、つまりシンボルコードにキャストされます。

数値に変換する前に、charを文字列に変換する必要があります。この目的でSubstringメソッドまたはToStringメソッドを使用できます。次のように

あなたはそれを行うことができます。

String^ text = this->input->Text; 
int size = text->Length; 
int * num = new int[size]; 

for (int i = size - 1; i >= 0; i--) { 
    num[i] = Convert::ToInt32(text->Substring(size - i - 1, 1)); 
} 

をただし、マネージコードとアンマネージコード混在させることはできません。

良い方法があります。配列の代わりにジェネリックコレクションを使用します。

String^ text = this->input->Text; 
int size = text->Length; 
List<int>^ nums = gcnew List<int>(); 

for (int i = size - 1; i >= 0; i--) { 
    nums->Add(Convert::ToInt32(text[i].ToString())); 
} 

using namespace System::Collections::Generic; 

リストは配列のように、インデックスによってアクセスすることができることを忘れないでください:

nums[i] 

だから、で動作するように便利です。そして最も重要なことは、メモリを解放することについて心配する必要はないということです。

+0

あなたはコードを投稿しました。どのようにこのコードが何をしているのかの説明を追加すると、これはより良い答えにするために質問に答える方法は? – crashmstr

+0

@crashmstr - 私は英語のネイティブスピーカーではないので、英語で書くのは難しいです。私はゆっくりとして、翻訳者を苦しめる。コードを書くのが簡単なので、英語で書くのは難しいです。 –

関連する問題