|
楼主 |
发表于 2003-8-5 12:47:38
|
显示全部楼层
就是下面的这段代码,怎么能正确接收中文??
#include <iostream>
#include <mysql/mysql.h>
#include <cstdio>
#include <cstdlib>
#include <string>
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 &findstr, const string &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, "&");
while(p != NULL)
{
dest[count] = p;
count++;
p = strtok(0, "&");
}
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(&mysql);
mysql_real_connect(&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(&mysql,qbuff);
mysql_close(&mysql);
}
void display()
{
cout << "<html><h1>";
cout << "The details saved are";
cout << "</h1></html>";
}
};
int main()
{
cout << "content-type: text/html" << endl << endl;
Register obj;
obj.get();
obj.urldecode();
obj.split();
obj.insertData();
obj.display();
return 0;
}
谢谢!! |
|