2016-07-17 3 views
0

Проще говоря, у меня есть виджет браузера, который я использую в наборе инструментов FLTK Gui, который можно загрузить с использованием такого файла.Создайте невидимый текстовый файл в C++

browser::load("textfile.txt");

Проблема заключается в том, я не хочу, чтобы создать физический текстовый файл, только невидимая один, так что я могу использовать его в качестве аргумента для браузера :: нагрузки выше. Я планирую использовать этот невидимый текстовый файл, загрузив его значениями, которые я собираюсь разместить в своем браузере .... затем используйте его так.

browser::load("invisible_textfile.txt"); 

Можно ли это сделать на C++?

Я уже пробовал использовать ifstream::rdbuf(), который, вероятно, не имеет ничего общего с этим. Я даже не знаю, как это назвать, поэтому я просто назову это невидимым текстовым файлом.

Я использую Windows 7 64 бит. MinGW компилятор.

+0

Вы хотите что-нибудь скрывать от invisible? –

+0

Если вы хотите избежать отображения файла в браузере, почему вы не можете просто вызвать браузер :: load()? –

+1

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

ответ

1

Допустим, что вы хотите добавить это эквивалент текстового файла, как это:

One 
Two 
Three 

Но вы не хотите, чтобы текстовый файл. Таким образом, один кусок кода, который будет делать то же самое, это:

const char *lines[] = { "One", "Two", "Three", 0 }; 
for(int i = 0 ; lines[i] != 0 ; ++i) 
    browser.add(lines[i]); 

Documentation link for that overload of add

Уточните ваш вопрос, или возможно задать новый вопрос, если вы хотите получить больше помощи о том, как получить lines с вашим данные.

+0

hyde ,, ты прочитал вопрос света? Это не то, что она спрашивает. Довольно ясно, что метод загрузки принимает текстовый файл. – domonica

+0

@domonica Когда я прочитал вопрос, OP специально не хочет реального текстового файла, ему нужно что-то еще. Использование именованного канала или что-то, что можно использовать load(), было бы средством Rube Goldbergian для достижения результата, когда есть метод add(), который может сделать это напрямую. – hyde

1

Это зависит от того, что browser::load() действительно делает внутренне, но давайте предположим, что он будет искать ваше имя файла и загрузить его.

Возможно, вы уже знаете, как читать/писать стандартный файл (например, http://www.cplusplus.com/doc/tutorial/files/). Теперь, если вы просто хотите скрыть файл от пользователя, вы можете установить скрытые флаги OS (например, windows). Я предполагаю, что это не то, что вы на самом деле хотите сделать здесь. (Возможно, вы также можете создать временный файл, который вы снова удалите, но это тоже не изящное решение.)

Возможно, вы захотите использовать именованный канал. Под Linux вы можете создать их с помощью mkfifo, а затем передать контент через эти файловые объекты.

Общий момент заключается в том, что если API browser не позволяет передать ему полную строку, содержащую текстовый файл или stringstream, вам понадобится файл-объект.

Если ваша единственная целевая система NTFS, есть хороший ответ на создание виртуальных файлов здесь: How to create a virtual file?

Но в конце концов, вы, вероятно, хотите, чтобы создать реальный файл (в вашем случае, вероятно, хотя и временный). Я бы рекомендовал разместить этот файл в системный временной путь.

 Смежные вопросы

  • Нет связанных вопросов^_^