我今天正在写一些爱好代码以获得乐趣,虽然我做了一些东西,但我想以一种听起来很棒/很棒/很酷的方式来做一些有趣的事情。
这个想法基本上就是你在C ++中有一个字符串并将它传递给stringstream(构造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结合使用?
假设没有用户的名字只包含数字字符?
答案 0 :(得分:2)
有点像hacky方式,但我要做的是将receiverid放入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);
这不是最干净的方式,但它确实有效。