模板std.file.readText无法从参数类型!()(File)推导函数

时间:2019-03-04 10:22:56

标签: d

我正在尝试使用readText函数:

import std.stdio;
import std.file;

string xmlName = r"D:\files\123.xml";
File file;

void main()
{
    writeln("Edit source/app.d to start your project.");
    file = File(xmlName, "r");
    string file_text = file.readText;
}

我遇到错误:

Error: template std.file.readText cannot deduce function from argument types !()(File), candidates are:
C:\D\dmd2\windows\bin\..\..\src\phobos\std\file.d(499,3):        std.file.readText(S = string, R)(auto ref R name) if (isSomeString!S && (isInputRange!R && !isInfinite!R && isSomeChar!(ElementType!R) || is(StringTypeOf!R)))

我在做什么错?

2 个答案:

答案 0 :(得分:3)

readText带有字符串参数,即要读取的文件名。由于您已经使用File(xmlName, "r")打开了文件,因此您应该使用std.stdio.File中定义的方法。

似乎您想要的是将整个文件内容读取为字符串。在这种情况下,建议您将main函数中的最后两行替换为string file_text = readText(xmlName);

答案 1 :(得分:0)

由于要使用 std.file 的readText(),因此需要稍加修改代码:

import std.stdio;
import std.file;

string xmlName = "D:/files/123.xml";

void main() {
  writeln("Edit source/app.d to start your project.");
  string file_text = file.readText(xmlName);
}

请注意,我们不再创建File的实例,因为这里不需要它。

相关问题