Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Input 有没有比scanf()更丑陋的方法在D中输入?_Input_D_Scanf - Fatal编程技术网

Input 有没有比scanf()更丑陋的方法在D中输入?

Input 有没有比scanf()更丑陋的方法在D中输入?,input,d,scanf,Input,D,Scanf,目前我知道如何在D中输入的唯一方法是使用scanf()函数。但该死的,它很丑。你可能会认为,因为这是从C语言升级而来的,所以他们会修复它 我正在寻找一种方法,只需一个参数。目前,您必须执行以下操作: int foo = 0; scanf("%i", &foo); writeln("%i", foo); 但只要有一个理由,它看起来就会干净得多。比如: int foo = 0; scanf(foo); writeln(foo); 谢谢。这里有一个非常酷的用户输入模块: 示例代码: if

目前我知道如何在D中输入的唯一方法是使用scanf()函数。但该死的,它很丑。你可能会认为,因为这是从C语言升级而来的,所以他们会修复它

我正在寻找一种方法,只需一个参数。目前,您必须执行以下操作:

int foo = 0;
scanf("%i", &foo);
writeln("%i", foo);
但只要有一个理由,它看起来就会干净得多。比如:

int foo = 0;
scanf(foo);
writeln(foo);

谢谢。

这里有一个非常酷的用户输入模块:

示例代码:

if (userInput!bool("Do you want to continue?"))
{
    auto outputFolder = pathLocation("Where you do want to place the output?");
    auto color = menu!string("What color would you like to use?", ["Blue", "Green"]);
}

auto num = require!(int, "a > 0 && a <= 10")("Enter a number from 1 to 10");
if(userInput!bool(“是否要继续?”)
{
auto outputFolder=pathLocation(“您想将输出放在哪里?”);
自动颜色=菜单!字符串(“您想使用什么颜色?”,[“蓝色”,“绿色]);
}
自动数=需要!(int,“a>0&&a
  • readf(“%d”和&foo);
    允许使用
    std.stdio.File
    而不是C
    File*
  • foo=readln().strip().to!int();
  • 用于读取具有相同格式行的整个文件:
    int[]numbers=slurp!int(“文件名”,%d”);

以上答案很好。我只想加上我的2美分

我经常有以下简单的功能:

T read(T)() 
{
   T obj;
   readf(" %s", &obj);
   return obj;
}
它是通用的,非常方便-它可以容纳任何空白并读取您要求的任何类型。您可以这样使用它:

auto number = read!int;
auto floating_number = read!float;
// etc.

是否值得将其拆分为自己的repo?对于类似C的语言,我是一个新手。您介意告诉我如何安装它吗?您可以复制整个文件并将其放置在项目的子文件夹中,匹配其模块名称,或者在www.code.dlang.org上查找lib并在使用dub时导入它。不幸的是,我无法在注册表中找不到它,所以选择1。@he#u the#u great:这不是我的repo,但我希望在Phobos中看到它。@AndrejM。我不知道,用于构建交互式控制台应用程序的实用程序实际上不属于标准库imho。我真的在寻找内置函数或库。但到目前为止,这是唯一的答案rks。在选择这个作为可接受的答案之前,我会等待一段时间。当涉及到字符串时,有一个更大的范围来定义语义。比如,你实际上想要得到什么-一个单词?一行?整个输入?标点符号呢?所以,不可能有通用的解决方案。这个实现通过吞下空白并返回将输入的其余部分作为单个字符串进行处理。您可以使用readln()读取一行,也可以使用split()获取单独的单词。