QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 610|回复: 1

帮帮忙!!!

[复制链接]
发表于 2003-7-16 18:23:54 | 显示全部楼层 |阅读模式
#include <cstdlib>
#include <fstream>
#include <string>
#include <cstdio>
#include <iostream>

using namespace std;

struct Applicant
{
        string name, address, city, phone, mail;
};

class WebProcess
{
private:
        string input, dest[5];
        Applicant app;
public:
        void get()
        {
                input.assign(getenv("QUERY_STRING"));
                cout &lt;&lt; "Content-type :html/text" &lt;&lt; endl &lt;&lt; endl;              
        }

        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;
                p = strtok(input.begin(), "&amp;");    //这是第47行
                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);
                app.name = dest[0];
                app.address = dest[1];
                app.city = dest[2];
                app.phone = dest[3];
                app.mail = dest[4];
        }

        void save()
        {
                ofstream file;
                file.open("applicant.dat",ios:ut|ios::app);
                file.write((char *)&amp;app,sizeof(app));
                file.close();
        }

        void display()
        {
                cout &lt;&lt; "&lt;html&gt;";
                cout &lt;&lt; "&lt;h1&gt;";
                cout &lt;&lt; "The details saved are:" &lt;&lt; "<br>";
                cout &lt;&lt; "&lt;/h1&gt;";
                cout &lt;&lt; "Name: " &lt;&lt; app.name &lt;&lt; "<br>";
                cout &lt;&lt; "Address: " &lt;&lt; app.address &lt;&lt; "<br>";
                cout &lt;&lt; "City: " &lt;&lt; app.city &lt;&lt; "<br>";
                cout &lt;&lt; "Phone: " &lt;&lt; app.phone &lt;&lt; "<br>";
                cout &lt;&lt; "E-Mail id: " &lt;&lt; app.mail &lt;&lt; "<br><br><br><br>";
                cout &lt;&lt; "&lt;h2&gt;Your details have been recorded.";
                cout &lt;&lt; "Thanks!!!!&lt;/h2&gt;";
                cout &lt;&lt; "&lt;/html&gt;";
        }
};

int main()
{
        WebProcess web;
        web.get();
        web.urldecode();
        web.split();
        web.save();
        web.display();
        return 0;
}


以上是源码,编译时以下错误,怎么解决啊????

g++ 13d2.cc
13d2.cc: In member function `void WebProcess::split()':
13d2.cc:47: cannot convert `__gnu_cxx::__normal_iterator&lt;char*,
   std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;' to
   `char*' for argument `1' to `char* strtok(char*, const char*)'
发表于 2003-7-17 09:35:00 | 显示全部楼层
不是有人回过了么?你意图把string转成char *
所以出错了!
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-15 11:07 , Processed in 0.042690 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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