如何在C#中无需Split()和Parse()实现类似C++的多值读取?
实现类似C++的控制台多类型读取(无Split/Parse)
要在C#中实现类似C++ cin >> s >> y 的便捷读取方式,且不使用Split()和Parse(),可以通过手动处理控制台输入的字符流来实现,核心思路是逐个读取输入字符、跳过空白字符、将数字字符转换为整数。
实现代码
先封装一个工具类来模拟C++ cin 的读取逻辑:
public static class Cin { public static int ReadInt() { int result = 0; char currentChar; // 跳过空白字符(空格、换行、制表符等) while (char.IsWhiteSpace((char)Console.In.Peek())) { Console.In.Read(); } // 读取数字字符并转换为整数 while (!char.IsWhiteSpace((char)Console.In.Peek())) { currentChar = (char)Console.In.Read(); if (currentChar < '0' || currentChar > '9') throw new FormatException("输入不是有效的整数"); result = result * 10 + (currentChar - '0'); } return result; } }
之后就可以像C++那样简洁调用:
int s = Cin.ReadInt(); int y = Cin.ReadInt(); Console.WriteLine(s + y);
逻辑说明
- 借助
Console.In(TextReader类型)的Peek()和Read()方法,实现底层字符流的读取与预览,对应C++cin自动跳过空白的行为。 - 通过字符的ASCII值差计算数字,逐步累加得到整数结果,全程不依赖
Split()分割字符串或Parse()转换类型,行为和C++的输入方式高度匹配,支持同一行或多行的整数输入。
内容的提问来源于stack exchange,提问作者Yusuf Islam
相关产品推荐
相关产品推荐

