初始化stringstream时出错

时间:2011-04-07 10:12:15

标签: c++ stream

我不明白为什么我在“if(sentToGroup(client_fd,ss)== -1){”行中收到此错误消息 运行以下代码时:

   stringstream ss;
    // ss.get();
    ss << "test";
    if (sentToGroup(client_fd, ss) == -1){
        perror("Fail sending to group");
    }

我收到下面的错误信息,为什么?

Initializing argument 2 of ‘int sentToGroup(int, std::stringstream)’

sentToGroup函数如下:

int sentToGroup(int sender_fd, stringstream str){
    char buffer[MAX];
    stringstream sender;
    sender << int(sender_fd) << "> " << str;
    int bytes = recv(sender_fd, buffer, sizeof(buffer), 0);
    for (int c = printerCnt; c < sizeof(printer); c++){
        if (printer[c] != sender_fd){
            if (send(printer[c], sender, bytes, 0) == -1){
                return -1;
            }
        }
    }
    return 0;
}

2 个答案:

答案 0 :(得分:4)

目前尚不清楚该消息是如何产生的,但stringstream不可复制。如果您不希望传递stringstream但不修改数据,则应通过引用传递并复制数据。

但是,您通常不应该传递stringstream。如果目的是将字符串传递给函数,请使用string。如果目的是将其视为流,请使用istream &ostream &iostream &。由于多态性,您仍然可以传递相同的stringstream

我不确定你在这里做了什么,但是将stringstream更改为iostream &应该可以解决眼前的问题以及以后可能发生的问题。

答案 1 :(得分:1)

您无法复制stringstream,请尝试通过引用传递它:

int sentToGroup(int sender_fd, stringstream& str)