Sha*_*fiz 25 c c# string formatted-input
可能重复:
.NET中有'sscanf()'吗?
C中的sscanf是从字符串中读取格式良好的输入的好方法.
如何实现这个C#.
例如,
int a,b;
char *str= "10 12";
sscanf(str,"%d %d",&a,&b);
Run Code Online (Sandbox Code Playgroud)
上面的代码将10分配给a和12分配给b.
如何使用C#实现相同的目标?
dri*_*iis 15
C#中没有直接的等价物.鉴于C#中的相同任务,您可以这样做:
string str = "10 12";
var parts = str.Split(' ');
int a = Convert.ToInt32(parts[0]);
int b = Convert.ToInt32(parts[1]);
Run Code Online (Sandbox Code Playgroud)
根据您可以假设输入的格式,您可能需要添加一些错误检查.
Cod*_*ray 10
sscanf.NET Framework中没有直接的等价物.
实现相同功能的最简单方法是拆分string(String.Split),然后使用该Int32.Parse方法将后续部分分配给变量.例如:
string myString = "10, 12";
string[] stringValues = myString.Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries);
int a = Int32.Parse(stringValues[0]);
int b = Int32.Parse(stringValues[1]);
Run Code Online (Sandbox Code Playgroud)
Parse如果要从字符串中读取的值不一定是整数值,则Framework中的许多不同数据类型都有方法,包括枚举.
你也可以使用正则表达式,但对于像这样简单的任务来说,它们可能有点过分.
编辑:如果你在使用时真的死机sscanf,你总是可以考虑P /调用C运行时库中的函数.这样的事可能(未经测试):
[DllImport("msvcrt.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
public static extern int sscanf(string buffer, string format, ref int arg0, ref int arg1);
Run Code Online (Sandbox Code Playgroud)
我只是在写作以消磨时间.
public static unsafe void Main(string[] args)
{
int a, b,c;
string str = "10 12 100";
sscanf(str, ' ', &a, &b, &c);
Console.WriteLine("{0} {1} {2}", a, b, c);
Console.Read();
}
public static unsafe void sscanf(string str, char seperator, params int*[] targets)
{
var parts = str.Split(seperator);
if (parts.Length != targets.Length) throw new ArgumentException();
for (int i = 0; i < parts.Length; i++)
{
*targets[i] = int.Parse(parts[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37927 次 |
| 最近记录: |