QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 573|回复: 1

请教一个C++的问题

[复制链接]
发表于 2003-7-15 14:34:57 | 显示全部楼层 |阅读模式
源码:
#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 : text/html" &lt;&lt; endl &lt;&lt; endl;  
                return;            
        }

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

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

        void split()
        {
                int count = 0;
                char *p;
                p = strtok(input.begin(), "&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);
                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();
                return;
        }

        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;";
                return;
        }
};
int main()
{
        WebProcess web;
        web.get();
        web.urldecode();
        web.split();
        web.save();
        web.display();
        return 0;
}
错误代码:
g++ register.cc
register.cc: In member function `void WebProcess::split()':
register.cc:46: 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-15 15:31:30 | 显示全部楼层
strtok的第一个参数因该是const char * ,而你却给的是个iterator指针。当然是错的了。我想因该是:
p = strtok(input.c_str(), "&");
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-15 10:57 , Processed in 0.060194 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

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