1

数字を文字列として保存したファイルがあります。このデータを char[] としてロードしてから、この配列を整数値に変換しようとしています。ロードする値がいくつかあり、何千もの一時文字列を作成するオーバーヘッドを回避しようとしています..

4

5 に答える 5

9

うん

int.Parse(string)

文字列を文字配列に変換する必要がある場合 (理由がわからない場合)、次を使用できます。

int.Parse(new string(myCharArray));

さらに補足すると…

このデータを char[] としてロードしてから、この配列を整数値に変換しようとしています。

char[]ファイルから文字列を読み取るだけでなく、a を使用する特定の理由はありますか? stringとにかく (標準の変換方法を使用して)を に変換する必要があるintため、無駄な手順のように思えます。

ロードする値がいくつかあり、何千もの一時文字列を作成するオーバーヘッドを回避しようとしています..

ファイルから読み取る文字列ごとに 1 つの文字列を作成するだけで済みます。ここで他にどのような処理が行われているかはわかりませんが、ファイルから文字列を読み取ってから に変換しても、int不要な一時ファイルは作成されません。

多数の/不明な数の文字列連結を実行している場合は、 a を使用し StringBuilderて入力を構築する必要があります。これは、カバーの下で変更可能な文字列として機能するためです (作成時に十分な大きさに初期化します)。それでも、ディスクからデータを読み取るには、これらの文字列を作成するよりもはるかに長い時間がかかります (はずです)。

于 2012-05-18T18:27:18.707 に答える
3

基本的に

 public static int StringToInt( char[] ch )
        {
            int length = ch.Length;
            int i = 0;
            int lastNumber = 0;
            int returnNumber = 0;
            bool numberNegative = false;
            int startPoint = 0;

            if ( ch[ 0 ] == '-' )
            {
                numberNegative = true;
                startPoint = 1;
            }

            for ( i = startPoint; i < length; i++ )
            {
                if ( ch[ i ] == ' ' )
                {
                    continue;
                }
                else
                {
                    if ( ( ch[ i ] >= '0' ) && ch[ i ] <= '9' )
                    {
                        returnNumber = ch[ i ] - '0';
                        if ( i > 0 )
                            lastNumber = lastNumber * 10;
                        lastNumber = lastNumber + returnNumber;
                    }
                    else
                    {
                        break;
                    }
                }
            }
            if ( numberNegative )
                lastNumber = -1 * lastNumber;

            return lastNumber;
        }

これはhttp://www.csharptricks.com/blog/2006/09/string-to-integer-in-c-net.htmlからのもので、文字列はchar[]に置き換えられています。

于 2012-05-18T20:53:40.443 に答える
2

いくつかの方法があります:

ただし、これらのメソッドはstringではなくオブジェクトを扱いますchar[]。C# では、ほとんどの場合char[]、組み込みstring[MSDN]のため、C のように処理しません。

于 2012-05-18T18:25:59.797 に答える