【发布时间】:2014-10-25 11:29:52
【问题描述】:
我今天写一些业余爱好代码是为了好玩,当我做一些事情时,我想到了一些有趣的事情,我想以一种听起来和看起来不错/很棒/很酷的方式来做。
这个想法基本上是你在 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 结合使用?
假设没有用户的名字只有数字字符?
【问题讨论】:
-
您对'smart format' 功能的确切含义是什么?
-
让
operator >>区分一组可能性并将正确的值分配给正确的变量?就像在示例中一样:) -
您可能会关注我在this question 中指出的内容。
-
您可以使用 Boost Spirit (Qi) 编写包含按特定顺序输入的特定类型的语法。这是员工解析示例:boost.org/doc/libs/1_48_0/libs/spirit/doc/html/spirit/qi/… 对于您示例中的简单情况,这可能是矫枉过正。
标签: c++ formatting iostream sstream