找回密码
 注册
查看: 642|回复: 6

c++求救!!!急!!!

[复制链接]
发表于 2003-8-4 22:44:18 | 显示全部楼层 |阅读模式
从一个HTML中提取出字符串,应该怎么还原成中文??急!!

(字符串已提取出来了,并且都分开了,用什么函数能还原成中文。)
发表于 2003-8-5 10:17:25 | 显示全部楼层
什么意思??
回复

使用道具 举报

 楼主| 发表于 2003-8-5 12:47:38 | 显示全部楼层
就是下面的这段代码,怎么能正确接收中文??

#include <iostream>
#include &lt;mysql/mysql.h&gt;
#include &lt;cstdio&gt;
#include &lt;cstdlib&gt;
#include &lt;string&gt;

using namespace std;

struct Data
{
        string name,passwd,repasswd,truename, sex, address, city, phone, mail;
};

class Register
{
private:
        string input, dest[9];
        Data dataObj;
public:
        void get()
        {
                input.assign(getenv("QUERY_STRING"));
        }

        void replaceAll(const string &amp;findstr, const string &amp;replstr)
        {
                int found = input.find(findstr);
                while(found != string::npos)
                {
                        input.replace(found, findstr.length(), replstr);
                        found = input.find(findstr);
                }
        }

        void urldecode()
        {
                replaceAll("%2C", ",");
                replaceAll("+", " ");   
                split();
        }

        void split()
        {
                int count = 0;
                char *p;
                char temp[512];
                strcpy(temp,input.c_str());
                p = strtok(temp, "&amp;");
                while(p != NULL)
                {
                        dest[count] = p;
                        count++;
                        p = strtok(0, "&amp;");
                }
                for(int counter = 0; counter != count; counter++)
                dest[counter].erase(0,dest[counter].find("=") + 1);
                dataObj.name = dest[0];
                dataObj.passwd=dest[1];
                dataObj.repasswd=dest[2];
                dataObj.truename=dest[3];
                dataObj.sex=dest[4];
                dataObj.address = dest[5];
                dataObj.city = dest[6];
                dataObj.phone = dest[7];
                dataObj.mail = dest[9];
        }

        void insertData()
        {
                MYSQL mysql;
                MYSQL_RES *res;
                MYSQL_ROW row;
                char *qbuff;
                qbuff=new char[512];
                mysql_init(&amp;mysql);
                mysql_real_connect(&amp;mysql,NULL,"root",NULL,"Diaz",0,0,0);
                sprintf(qbuff,"insert into Customer values('%s','%s','%s','%s','%s','%s','%s','%s',NULL,NULL,NULL,NULL)",
                dest[0].c_str(),dest[1].c_str(),dest[3].c_str(),dest[4].c_str(),dest[5].c_str(),dest[6].c_str(),dest[7].c_str(),dest[8].c_str());
                mysql_query(&amp;mysql,qbuff);
                mysql_close(&amp;mysql);
        }

        void display()
        {
                cout &lt;&lt; "&lt;html&gt;&lt;h1&gt;";
                cout &lt;&lt; "The details saved are";
                cout &lt;&lt; "&lt;/h1&gt;&lt;/html&gt;";
        }
};

int main()
{
        cout &lt;&lt; "content-type: text/html" &lt;&lt; endl &lt;&lt; endl;
        Register obj;
        obj.get();
        obj.urldecode();
        obj.split();
        obj.insertData();
        obj.display();
        return 0;
}


谢谢!!
回复

使用道具 举报

发表于 2003-8-6 09:12:42 | 显示全部楼层
process you data by using wchar_t and wstrcpy() ...
回复

使用道具 举报

 楼主| 发表于 2003-8-6 09:30:19 | 显示全部楼层
Would you like to tell me the details?Thanks!
回复

使用道具 举报

发表于 2003-8-6 17:50:23 | 显示全部楼层
Try using wchar_t type in your split() function:
for example:
[code:1]
void split&#40; void &#41;
&#123;
/*...*/
wchar_t *p;
wchar_t temp&#91;512&#93;;
wstrcpy&#40;temp,input.c_str&#40;&#41;&#41;;
/* ... */
&#125;
[/code:1]
Good Luck!
回复

使用道具 举报

 楼主| 发表于 2003-8-6 18:08:56 | 显示全部楼层
Hi,Thank you very much!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2025-8-11 12:02 , Processed in 0.037522 second(s), 16 queries .

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表