一個實施的atoi我有保存爲字符串的數字文件。我正在尋找加載這個數據作爲char []然後將此數組轉換爲整數值。我有幾個值來加載,我試圖避免產生數以千計的臨時字符串的開銷..是否有C#
是否有C#
回答
燁
int.Parse(string)
如果你絕對必須轉換字符串的字符數組(不知道爲什麼),你可以使用:
int.Parse(new string(myCharArray));
關於進一步筆記...
我尋找加載該數據作爲一個char [],那麼該數組轉換爲一個整數值。
是否有特別的理由使用char[]
而不是僅僅從文件中讀取字符串?您將需要一個string
要轉換爲int
反正(使用標準轉換方法),因此它似乎死不瞑目。
我有幾個值來加載,我試圖避免產生數以千計的臨時字符串的開銷..
您應該只需要爲每次從文件中讀取字符串一個字符串。我不知道這裏涉及的是什麼其他處理,但是從文件中讀取一個字符串,然後轉換爲int
不會產生不必要的臨時對象。
如果您正在執行大量/未知數量的字符串連接,那麼您應該使用StringBuilder
來構建您的輸入,因爲它在封面下充當可變字符串(在創建時還將其初始化爲足夠大的尺寸) 。即便如此,它(應該)採取遠再從磁盤讀取數據,然後它會創建這些字符串。
在.net中創建字符串需要花費,我試圖避免這種情況。 –
而且它極其微乎其微。如果你真的需要,你總是可以構建一個[StringBuilder](http://msdn.microsoft.com/en-us/library/system.text.stringbuilder.aspx)並手動插入每個字符。 – Tejs
@AaronFischer:創造一切都有成本。你有沒有進行過任何測量?你是否已經表明從文件中讀取字符串會引發應用程序中的瓶頸?爲什麼你認爲閱讀一個字符數組比閱讀一個字符串要便宜得多?在推出可能不必要和無效的優化之前,我會建議先採用簡單的路徑。 –
基本上
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與焦炭代替字符串[]
這裏也是可能的實現的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;
}
- 1. 是否有C++
- 2. (c === c)是否有錯?
- 3. 是否有C++的TeX API?
- 4. C++中是否有事件?
- 5. 是否有使用C#
- 6. Qt是否有C接口?
- 7. 是否有C++ SOLR庫?
- 8. 是否有:C#文字庫
- 9. 是否有C++的LINQ庫?
- 10. 是否有C#類java.util.Properties類
- 11. Objective-C是否有反思?
- 12. 是否有C++ quickfix的MessageCodeGenerator?
- 13. 是否有可能?(C++)
- 14. 是否有像OSX的dev C++程序
- 15. 是否有可能#include在C++類中?
- 16. 是否有.NET(C#或VB.NET)的UPnP庫?
- 17. 是否有與C#7.0等效的Microsoft.Net.Compilers?
- 18. 是否有C#版本的Microsoft.VisualBasic.CompilerServices.Operators?
- 19. 是否有可能實現在C#
- 20. C是否有庫存儲庫?
- 21. 是否有C++一個__CLASS__宏?
- 22. 該值是否爲有效年份C#
- 23. C#如何檢測是否有'/'字符?
- 24. 檢查系統是否有聲音C#
- 25. C是否有更多的宏像NULL?
- 26. C#是否有類似PHP的mb_convert_encoding()?
- 27. C是否有跨平臺框架?
- 28. c中是否有P2P框架?
- 29. 檢查JSON和XML是否有效? c#
- 30. C#/ .NET是否有內置的「VersionNumber」類?
這些函數採用一個串不char [] –
@AaronFischer:你爲什麼首先需要'char []'? –
還有一個問題,即atoi()函數允許字符串「在形成整數的那些字符之後包含其他字符,這些字符被忽略,並且對此函數的行爲沒有影響。」 –