Могу ли я создать std :: ifstream на основе символа *, а не файла? - PullRequest
2 голосов
/ 17 декабря 2011

Я заинтересован в обмене данными между Java и C ++, поэтому JNI.В настоящее время весь код C ++ ожидает файл, поэтому все написано в терминах std :: ifstream.Вместо того, чтобы писать файлы и читать их снова, я хотел бы иметь возможность просто передать символ * и прочитать его из приложения, вместо этого трактуя символ * как поток if.Есть ли способ создать ifstream, основанный на char *?

Спасибо

Ответы [ 2 ]

5 голосов
/ 17 декабря 2011

Да, это называется std::istringstream. Вы можете использовать это так:

#include<sstream>

....

char const* s = "whatever";

std::istringstream iss(std::string(s));

int i;

iss >> i;

....

Если ваш код ожидает std::ifstream конкретно , вы можете изменить его на универсальный std::istream, от которого оба наследуют, как упоминал Адриан.

2 голосов
/ 17 декабря 2011

Подумайте об использовании строковых потоков - они часто ведут себя как файлы. Вы действительно хотите использовать ifstream, а не istream? Если бы он был написан с помощью istream, вы могли бы просто добавить классы stringstream / istringstream.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...