在strtok之后比较字符串

时间:2012-05-15 21:23:44

标签: c++ strtok

我想在strtok之后比较字符串,但我似乎变得虚假而不是真正的

如果我正在使用strtok,还有什么需要做的吗?

char file[] = "temp.txt";
ifstream getfile;
getfile.open(file,ios::in);
if(getfile.is_open())
{
        char data[256];
    char *line;
    const char * test = "init";

    //loop till end of file                   
    while(!getfile.eof())
    {
        //get data and store to variable data
            getfile.getline(data,256,'\n');

        line = strtok(data," ");
        while(line != NULL)
        {
            cout << "Comparing " << line << " with " << test <<endl;
            //This is suppose to print but it dosent
            if(line == test)
                cout << line << endl;

            line = strtok(NULL," ");
        }

    }
}

输出:

 comparing init with init

想要输出:

 comparing init with init
 init

谢谢! :d

===========================

更改为以下内容并且有效! :)

if(strcmp(line,test)==0)

2 个答案:

答案 0 :(得分:3)

你在比较指针而不是内容。查看strcmp或将C字符串包装在std :: string中。

答案 1 :(得分:2)

您正在比较指针(字符串的地址)。他们永远是不同的。使用strcmp()比较字符串本身。