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++ で可能ですか? または、Boost と組み合わせて C++ を使用しますか?

数字のみの名前を持つユーザーはいないと仮定しますか?

4

1 に答える 1

2

ちょっとハックな方法ですが、私なら、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);

それは実際には最もクリーンな方法ではありませんが、機能します。

于 2014-10-25T12:06:40.007 に答える