我有一个数字保存为字符串的文件。我希望将此数据加载为char []然后将此数组转换为整数值。我有几个值要加载,并试图避免创建数千个临时字符串的开销..
答案 0 :(得分:9)
烨
int.Parse(string)
如果绝对必须将字符串转换为字符数组(不确定原因),可以使用:
int.Parse(new string(myCharArray));
进一步说明......
我希望将此数据作为char []加载,然后将此数组转换为整数值。
是否有特殊原因使用char[]
而不只是从文件中读取字符串?无论如何,您需要string
转换为int
(使用标准转换方法),这似乎是一个浪费的步骤。
我要加载几个值,并试图避免创建数千个临时字符串的开销。
您只需要为从文件中读取的每个字符串创建一个字符串。我不知道这里涉及到哪些其他处理,但是从文件中读取字符串然后转换为int
将不会产生不必要的临时处理。
如果您正在执行大量/未知数量的字符串连接,那么您应该使用StringBuilder
来构建输入,因为它在封面下充当可变字符串(在创建它时将其初始化为足够大的大小)以及)。即便如此,它(应该) far 更长时间从磁盘读取数据然后创建这些字符串。
答案 1 :(得分:2)
基本上
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 []
答案 2 :(得分:1)
有两种方法:
虽然这些方法处理string
个对象,而不是char[]
。在C#中,大多数情况下,由于内置char[]
类型 [MSDN] string >
答案 3 :(得分:0)
这里也是atoi()
的可能实现int atoi(const char *s)
{
int n=0, neg=0;
while (isspace(*s)) s++;
switch (*s) {
case '-': neg=1;
case '+': s++;
}
/* Compute n as a negative number to avoid overflow on INT_MIN */
while (isdigit(*s))
n = 10*n - (*s++ - '0');
return neg ? n : -n;
}
答案 4 :(得分:-1)
char c = '1';
int i = Convert.ToInt32(c.ToString(), 10); /*base 10 conversion*/