Можно ли читать и писать в заголовочный файл? - PullRequest
0 голосов
/ 28 мая 2019

Итак, я пытаюсь переписать макрос, который у меня есть в заголовочном файле, но я не могу открыть его с помощью std :: ifstream.Возможно ли даже чтение / запись в существующий заголовочный файл или существуют разрешения по умолчанию, которые не позволяют программам изменять содержимое заголовочного файла?

std::ifstream versionH;
char temp[100];
versionH.open("..\temp.h");
if (!versionH.is_open()) {
    std::cout << "Didn't open" << std::endl;
    return 1;
}
while (!versionH.eof()) {
    versionH >> temp;
    std::cout << temp << std::endl;
}

Я надеюсь, что смогу читатьв заголовочном файле и отобразите его содержимое, но 'versionH.is_open ()' возвращает false.Я что-то упускаю здесь?

1 Ответ

1 голос
/ 28 мая 2019

Возможно ли чтение и запись в файл заголовка?

Заголовки - это файлы.Можно читать и записывать файлы (при условии, что файл существует, и процесс имеет достаточные разрешения и т. Д.).Поэтому мы можем сделать вывод, что файлы заголовков можно читать и записывать.

Обратите внимание, что изменение файла заголовка, использованного для компиляции программы, не влияет на скомпилированную программу.Это может повлиять только на программы, скомпилированные с использованием измененного файла.

Кроме того, файлы в контексте, где программа компилируется, не имеют отношения к программе.Только файлы в файловой системе, в которой выполняется программа, могут быть прочитаны.

Есть ли что-то, что мне здесь не хватает?

Возможно, файл не существует,Имя файла наиболее подозрительно.Действительно ли он содержит символ табуляции (\t), или вы намеревались написать разделитель (windows) dir?Обратная косая черта является escape-символом, поэтому для того, чтобы записать его в строковый литерал, вы должны экранировать его (с другой обратной косой чертой: \\).

...