c# - 如何在 C# 中从控制台读取很长的输入?

标签 c# console windows-console

我需要在 C# 中从控制台加载非常长的一行,最多 65000 个字符。 Console.ReadLine 本身有 254 个字符的限制(转义序列 +2),但我可以使用这个:

static string ReadLine()
{
    Stream inputStream = Console.OpenStandardInput(READLINE_BUFFER_SIZE);
    byte[] bytes = new byte[READLINE_BUFFER_SIZE];
    int outputLength = inputStream.Read(bytes, 0, READLINE_BUFFER_SIZE);
    Console.WriteLine(outputLength);
    char[] chars = Encoding.UTF7.GetChars(bytes, 0, outputLength);
    return new string(chars);
}

...为了克服这个限制,最多 8190 个字符(+2 个转义序列)- 不幸的是我需要输入更大的行,并且当 READLINE_BUFFER_SIZE 设置为大于 8192 的任何值时,错误“存储空间不足可用于处理此命令”显示在 VS 中。缓冲区应设置为 65536。我已经尝试了几个解决方案来做到这一点,但我仍在学习并且没有一个超过 1022 或 8190 个字符,我怎样才能将该限制增加到 65536?提前致谢。

最佳答案

您必须在 main() 方法中添加以下代码行:

byte[] inputBuffer = new byte[4096];
                Stream inputStream = Console.OpenStandardInput(inputBuffer.Length);
                Console.SetIn(new StreamReader(inputStream, Console.InputEncoding, false, inputBuffer.Length));

然后你可以使用 Console.ReadLine();读取长用户输入。

关于c# - 如何在 C# 中从控制台读取很长的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9750853/

相关文章:

c++ - 在 Windows 控制台应用程序中输出 unicode 字符串

c# - C#中的数组切割和合并

c# - 一条线穿过的所有点

python - tqdm progressbar 和 zip 内置不能一起工作

Windows 控制台似乎不喜欢 Unicode

windows - Groovy:在命令行参数中使用&符号

c# - 混合模式程序集是针对运行时版本 'v2.0.50727' 构建的,无法在 4.0 运行时加载 - 研究的解决方案不起作用

c# - 防止 Winforms Designer 为继承的控件生成属性值

wordpress - 这个与 Facebook 相关的 FB.NativeExtensions.onready 控制台错误是什么,我该如何解决?

c# - 控制台应用程序在异步调用完成之前终止