You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 18:48:38