各位程序員您好。將流轉換爲函數參數以使用Telnet和Ncurses
我正在開發一個帶有應該通過Telnet連接到服務器的套接字的C/C++程序。
要發送短信,ANSI代碼到Telnet遠程終端我使用這個funcion:
void writeline(int socketfd, string line)
{
string tosend = line + "\n";
write(socketfd, tosend.c_str(), tosend.length());
}
有沒有一種方法來創建一個像COUT流對象,CERR,堵塞,甚至一個文件(從C),它發送到一個函數的一切?
例如:
clientout << "Hello World";
會叫這樣的:
writeline(clientout.str()); //or alike
我做了什麼,當我編程的微處理器(帶AVR)和標準輸出重定向到一個函數這個去年一樣將所有內容都發送到USART連接。我希望我現在可以做那樣的事情。
我這是怎麼做的,然後:
static int usart_putchar(char c, FILE *stream)
{
while (!(UCSR0A & (1<<UDRE0)));
UDR0 = c;
return 0;
}
static FILE usart_stream = FDEV_SETUP_STREAM(usart_putchar, NULL, _FDEV_SETUP_WRITE);
int main()
{
//(...)
stdout = &usart_stream;
//(...)
}
我很感興趣,這是因爲,除了是打印到遠程終端更簡單的方法,我需要一個流甚至考慮使用ncurses的有我的程序。要使用它,我需要this函數,它需要一個流輸入和另一個輸出。
對於長期的問題,我表示歉意。 預先感謝您。
我看到的。有沒有辦法從「streabuf」獲取「FILE」?這只是ncurses不適用於C++。函數的定義是「SCREEN * newterm(char * type,FILE * outfd,FILE * infd)」。謝謝。 –
我已經檢查了streambuf中的每個受保護的虛擬函數,但無法理解如何執行你所說的內容。 http://www.cplusplus.com/reference/streambuf/streambuf/你能告訴我我該怎麼做嗎? –
'FILE'是C,而不是C++。你不能以某種方式將C'FILE'指針附加到C++'std :: streambuf'。至於'std :: streambuf'的子類化,恐怕要花費超過500個字符才能進入stackoverflow.com評論,以便編寫一個爲std :: streambuf進行子類化的教程。 –