Как отправить данные из массива char в istream в классе C ++ - PullRequest
0 голосов
/ 13 апреля 2020

Я хочу отправить массив данных из основной функции в член istream класса в следующем коде:

class StreamClass {
    public:
        std::shared_ptr<std::istream> istream_ptr;
};
int main(){    
    StreamClass sc;    
    char charArray[] = "hello world";
    sc.istream_ptr = std::make_shared<std::istream>(nullptr);   
}

Я прочитал эту ссылку Получить istream из символа * Однако я хочу сделать это без написания кода вручную, просто используя простые функции std. это возможно.

1 Ответ

1 голос
/ 13 апреля 2020

Общий указатель является немного накладным на этот вопрос. Вы должны уважать это. Затем вам нужно преобразовать ваш массив в указатель. Вы также можете создать исходящий поток вместо входящего потока из вашего вопроса. :

#include "iostream"
#include "memory"

class StreamClass {
    public:
        std::shared_ptr<std::istream> istream_ptr;
        std::shared_ptr<std::ostream> ostream_ptr;
};
int main(){
    StreamClass sc;
    char charArray[] = "hello world";
    sc.istream_ptr = std::make_shared<std::istream>(nullptr);
    sc.ostream_ptr = std::make_shared<std::ostream>(nullptr);
    std::cout << &(charArray[0]) << std::endl;
    *sc.ostream_ptr << &(charArray[0]);
    *sc.istream_ptr >> &(charArray[0]);
}

...