c++ iostream, stringstream termination

c++ iostream, stringstream termination

本文关键字:termination stringstream iostream c++      更新时间:2023-10-16

我正在编程Simly TCP服务器,我对流的终止有问题。

我正在收到一些数据,定义了数据的结束是组合rn,但是该数据中的流在此数据中的第一个上终止。

bool read(char &chr_glob, stringstream &ss ){
    char chr;
    char buffer[BUFFER_SIZE];
    while (!ss.get(chr)){
        ss.clear();
        recv(c, buffer, BUFFER_SIZE, 0);
        ss<<buffer;
    }
    chr_glob = chr
    if ( chr == 'r' ){
        char tmp = ss.peek();
        if ( tmp == 'n'){
            ss.get(chr_glob);
            return false;
        }
    } 
    return true;
}

我试图使用iostream,但是我遇到了编译问题,并且不知道如何解决。

In file included from /usr/include/c++/4.8/iostream:40:0,
from robot.cpp:7:
/usr/include/c++/4.8/istream: In function ‘int main(int, char**)’:
/usr/include/c++/4.8/istream:830:7: error: ‘std::basic_iostream<_CharT, _Traits>::basic_iostream() [with _CharT = char; _Traits = std::char_traits<char>]’ is protected
basic_iostream()
^
robot.cpp:148:14: error: within this context
iostream ss;
^

该数据中的流在第一个 0上终止。

ss<<buffer;

期望零端的C字符串(用于确定数据长度)。使用write进行二进制数据:

size = recv(c, buffer, BUFFER_SIZE, 0);
ss.write(buffer, size);

我试图使用iostream,但是我遇到了编译问题,并且不知道如何解决。

iostream是基类。它不能直接实例化。像您一样使用stringstream