LINUX.ORG.RU

Тебе наверно надо юзать stringstream и strstream - один из них депрекатед в новом GCC (начиная с 3-го) - создай его двусторонним (на ввод и вывод - ioXXX), потом залей туда данные, и считывай оттуда, после чего делай flush() своему потоку - пример привести не смогу, по памяти пишу, но работает.

Тонкости разделения одного буфера на два разнотипных потока увы не знаю :)

Spectr ★★★
()

#include <sstream>

using namespace std;

int main(void) {

stringstream str;

float q = 3.1215926;

string t = "12";

string z;

str << q;

str >> z;

cout << z << endl;

str.flush();

str << t;

str.flush();

str >> z;

cout << z << endl;

}

вот такой код работает на GCC3.XX, только выведет оно два раза "3.1415926". Щас вспомню, как flush правильно делать...

Такое тебе подойдет? А то несколько не совсем корректно вопрос поставлен... :)

Spectr ★★★
()
Ответ на: комментарий от Spectr

Более конкретно: есть массив char[] содержащий копию текстового файла и есть функция парсящая файл заданный istream так вот необходимо преобразовать етот массив в istream и передать в ф-ю. Получить какую либо инфу на тему копией чего является char[] невозможно

cvv ★★★★★
() автор топика
Ответ на: комментарий от Spectr

>Тебе наверно надо юзать stringstream и strstream

Так оно и есть

>потом залей туда данные, и считывай оттуда, после чего делай flush() своему потоку

а зачем делать flush()???

cvv ★★★★★
() автор топика
Ответ на: комментарий от cvv

flush() не помогает, надо иначе - я не помню что точно использовать - просто как в примере, если в поток забуцнешь данные ( << ), то потом можешь их забрать ( >> ), и повторно при записи/заборе будут выдаваться старые данные. Или перемещать указатель чтения... В общем, что помнил по проблеме, то и написал.

Spectr ★★★
()
Ответ на: комментарий от Spectr

Вобщем спасибо. Кажется работает.

ЗЫ: мне поток был нужен только на чтение

cvv ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.