0

几天来,我一直在梳理这个网站和许多其他网站,这就是我遇到的问题。我有一个char*我需要解析的字符串,90% 的时间它解析得很好,但是在某些字符串上我得到垃圾字符并且它没有按预期拆分。您可以在 img 中看到一个示例:垃圾字符

这是我正在使用的代码(我也尝试了许多其他替代方法,这是唯一接近的)

bool __stdcall ChatLogger::HandleNewChatLine( short sMode, char* szText )
{
    ofstream chatlog;
    ofstream chatparsed;

    if(sMode == 660)
    {
        string data = szText;

        chatparsed.open("D:\\chatlog_parsed.txt", ios_base::app );
        chatparsed << data << '\n' << '\n';
        chatparsed.close();

        string buf; // Have a buffer string
        stringstream ss(data); // Insert the string into a stream

        vector<string> tokens; // Create vector to hold our words

        while (ss >> buf)
        {
            tokens.push_back(buf);
        }

        chatparsed.open("D:\\chatlog_parsed.txt", ios_base::app );

        for(size_t i = 0; i < tokens.size(); i++)
        {
            chatparsed << "array pos: " << i << "    " << tokens[i] << '\n';
        }
        chatparsed.close();
    }

    chatlog.open("D:\\chatlog.txt", ios_base::app );
    chatlog << "Line ID: " << sMode << "    " << "Text: " << szText << '\n';
    chatlog.close();

    return false;
}

最终,每行应该只有一个单词,如果可能的话,我真的需要消除垃圾字符,要么从向量中的单个字符串中删除它们,要么最好在之前删除它们。std::stringstream在将其放入向量中并删除垃圾字符或以某种方式将它们转换为空格之前,也许有某种方法可以遍历它。

4

0 回答 0