数字を文字列として保存したファイルがあります。このデータを char[] としてロードしてから、この配列を整数値に変換しようとしています。ロードする値がいくつかあり、何千もの一時文字列を作成するオーバーヘッドを回避しようとしています..
5 に答える
うん
int.Parse(string)
文字列を文字配列に変換する必要がある場合 (理由がわからない場合)、次を使用できます。
int.Parse(new string(myCharArray));
さらに補足すると…
このデータを char[] としてロードしてから、この配列を整数値に変換しようとしています。
char[]
ファイルから文字列を読み取るだけでなく、a を使用する特定の理由はありますか? string
とにかく (標準の変換方法を使用して)を に変換する必要があるint
ため、無駄な手順のように思えます。
ロードする値がいくつかあり、何千もの一時文字列を作成するオーバーヘッドを回避しようとしています..
ファイルから読み取る文字列ごとに 1 つの文字列を作成するだけで済みます。ここで他にどのような処理が行われているかはわかりませんが、ファイルから文字列を読み取ってから に変換しても、int
不要な一時ファイルは作成されません。
多数の/不明な数の文字列連結を実行している場合は、 a を使用し StringBuilder
て入力を構築する必要があります。これは、カバーの下で変更可能な文字列として機能するためです (作成時に十分な大きさに初期化します)。それでも、ディスクからデータを読み取るには、これらの文字列を作成するよりもはるかに長い時間がかかります (はずです)。
基本的に
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[]に置き換えられています。