1

我对 C++ 很陌生,需要知道如何使用 %data

    int ping = pNetChannel->GetPing(true);
if (ping < 500)
{
    float data = pNetChannel->GetPing(true);
    pNetChannel->Disconnect(eDC_Kicked,"High Ping: %data m/s");
}

此代码是实验性的,它被设计为服务器的绝对限制 - 在其他地方的配置文件中手动指定自定义限制。

此代码需要断开播放器并在“High Ping”部分之后显示“数据”变量。

谢谢

4

2 回答 2

1

取决于断开连接的外观。像这样的东西可能会做你想做的事(假设 eDC_Kicked 是某种类状态)

void Disconnect(Status _status, std::string _reason) { 
    // Do disconnect things
    ...
    // Print message
    std::cout << _reason << std::endl;
}

但是,在发送它执行函数之前,您仍然必须构造您的字符串(例如,使用字符串流):

if (ping < 500)
{
    float data = pNetChannel->GetPing(true);
    std::ostringstream oss;
    oss << data;
    std::string ping(oss.str());
    std::string reason = "High ping: " + ping;
    pNetChannel->Disconnect(eDC_Kicked, reason);
}

或者,如果有意义,您可以以这种方式编写Disconnect (并将字符串“High Ping:”和浮点值分别传递给它):

void Disconnect(Status _status, std::string _message, float _value) { 
     // Do disconnect things
     ...
     // Print message
     std::cout << _message << " " << _value << std::endl;
 }

但是,如果您每次都没有确切的一条消息和一个变量等,这可能是不可取的。此外,如果您愿意,您可以使用printf进行打印。

于 2013-04-19T15:46:50.700 回答
0

据说,你的意思是:

float data = pNetChannel->GetPing(true);
pNetChannel->Disconnect(eDC_Kicked,"High Ping: %5.2f m/s", data);

尽管它与以下内容不一致:

int ping = pNetChannel->GetPing(true);

之前就行了。是否GetPing返回整数或浮点值?

于 2013-04-19T15:38:03.040 回答