Шаблон std.file.readText не может выводить функцию из типов аргументов! () (Файл) - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь использовать функцию 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 голосов
/ 30 апреля 2019

Поскольку вы хотите использовать readText () std.file , вам нужно немного изменить ваш код:

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);
}

Обратите внимание, что мы больше не создаем экземплярФайл как то здесь не нужен ...

0 голосов
/ 04 марта 2019

readText принимает строковый аргумент, являющийся именем файла для чтения.Поскольку вы открыли файл с помощью File(xmlName, "r"), вам следует использовать методы, определенные в std.stdio.File.

Похоже, вы хотите прочитать все содержимое файлав строку.В этом случае я предлагаю заменить две последние строки в вашей функции main на string file_text = readText(xmlName);

...