我今天正在编写一些爱好代码来取乐,在我做一些事情的同时,我想到了一些有趣的事情,我想以一种听起来和看起来不错/很棒/很酷的方式来做。
这个想法基本上是你在 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 结合使用?
假设没有用户的名字只有数字字符?
最佳答案
这是一种 hacky 方式,但我要做的是将 receiverid 放入字符串流中,然后尝试从字符串流中读入一个 int。如果设置了 sstream 的失败标志,那么我们必须有一个字符串,所以我们使用初始接收者 ID。
像这样:
std::string recieverid;
std::stringstream srecieverid(recieverid);
int irecieverid;
srecieverid >> irecieverid;
if(srecieverid.fail()) {
irecieverid = GetUseridFromUsername(recieverid);
}
SendMessage(irecieverid, message);
这并不是最干净的方法,但它确实有效。
关于c++ - stringstream(或 boost)是否有一些智能格式功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26561867/