0

我今天写一些爱好代码是为了好玩,当我做一些事情时,我发现了一些有趣的东西,我想以一种听起来和看起来不错/很棒/很酷的方式来做。

这个想法基本上是你在 C++ 中有一个字符串,然后你将它传递给一个字符串流(以构造 ss)。

然后,预期的格式是<int or string> <string>,您将根据用户输入获得正确的输出,例如:

bool ExecuteSendPrivateMessage(int sender, std::string params)
{
    std::stringstream sparams(params);
    int_or_string receiverid;
    std::string message;

    sparams >> receiverid >> message;

    if (sparams.fail())
    {
        std::cout << "usage: /send_message_to <userid/username> <message>" << std::endl;
        return true;
    }
    if (int_or_string.HasString())
    {
        receiverid = GetUseridFromUsername(int_or_string.GetString());
    }
    SendMessage(receiverid.GetInt(), message);
    return true;
}

这在 C++ 中可能吗?还是将 C++ 与 Boost 结合使用?

假设没有用户的名字只有数字字符?

4

1 回答 1

2

是一种 hacky 方式,但我要做的是将接收器 ID 放入 stringstream,然后尝试从 stringstream 读取 int。如果设置了 sstream 的失败标志,那么我们必须有一个字符串,所以我们使用初始接收器 ID。

像这样的东西:

std::string recieverid;
std::stringstream srecieverid(recieverid);
int irecieverid;
srecieverid >> irecieverid;
if(srecieverid.fail()) {
   irecieverid = GetUseridFromUsername(recieverid);
}
SendMessage(irecieverid, message);

这不是最干净的方法,但它确实有效。

于 2014-10-25T12:06:40.007 回答