I have a problem with my console program.

I have a text file named "myRecord.txt" with the following contents:

101,Carlito Caballero,500.00
102,Tina Gamboa,560.34
103,Angel Caballero,750.55
104,Kyla Shane,850.32
105,Jogie Glen Mait,1000.00

If I run the program, the console should prompt the user to enter the id number (which is the set of numbers on each beginning of a line),

ID:___

and the output would be a profile of the id number entered.

//prompts user to enter a specific id number
ID:101

//output
ID:101
Name:Carlito Caballero
Rate:500.00

I have tried to tokenize the whole file but a getline cant have delimiters in it. I also had tried to find something on the text file but it only finds a string entered and not the whole line.

Any help would be appreciated.

>>I have tried to tokenize the whole file
Post what you have tried.


>>getline cant have delimiters in it.

std::string word;
ifstream in("filename.txt");
while( getline(in,word,',') )
{
  do something with this token
}

This is what i had tried to do:

I tried to find the id number but it just give the correct id number but not the name and the rate:

void find()
{
    char size=100;
    char string[size],temp[size][32];
    char * tokenPtr;
    int i=0;

    cout<<"Enter ID number to search: ";
    cin.getline(string,size);

    tokenPtr =strtok(string," ,.");

    while (tokenPtr != NULL)
   	{
      	strcpy(temp[i],tokenPtr);
         i++;
      	tokenPtr = strtok(NULL," ,.");
    }
   	for(int j=0;j<i;j++)
    {
   	 char word1[300],word2[300];

        ifstream jogieglen("myRecord.txt");
        ifstream janmarion("myRecord.txt");

         while (jogieglen>>word1)
         	if (strcmp(word1,temp[j])==0)
   				 tokenPtr = strtok (word1," ,.-");
   				 cout<<"ID: "<<temp[j]<<endl;
   				 while (janmarion>>word2)
         	if (strcmp(word2,temp[j])==0)
   				 tokenPtr = strtok (word2," ,.-");
   				 cout<<"Name: "<<temp[j]<<endl;
    }
}

The Name: on the last part is just my poor attempt to at least show something.

But thanks to the idea, can i add other punctuations on the delimiters?

Edited 6 Years Ago by Nick Evan: added code-tags

Actually, yeah. He's my colleague. You're the same person who gave him the code. It was correct. Thanks for your help. Im looking forward to work with you again. Thanks Colezy!

Hey, thanks for you help. I think you should change your status from still learning to adept. Thanks a lot!

actually i had made a code for myself using the ideas given to me on previous posts

void find()
{

    ifstream data("myRecord.txt");
    string item,line;
    int x=0;
    int y=0;
    string id;

    cout<<"Enter Employee Id: ";
    cin>>id;

    while(!data.eof())
    {
        getline(data,line);
        string item_array[10];
        stringstream stream(line);
        x=0,y=0;

        while(getline(stream,item,','))
        {
            item_array[x]=item;
            x++;
            item_array[x]=item;
            y++;
        }

        if(item_array[0]==id)
        {
            cout<<"***********************************"
                <<"*****************"<<endl;
            cout<<setfill('.')<<left<<setw(35)<<"ID: "
                <<right<<" "<<item_array[0]<<endl;
            cout<<setfill('.')<<left<<setw(35)<<"Name: "
                <<right<<" "<<item_array[1]<<endl;
            cout<<setfill('.')<<left<<setw(35)<<"Rate: "
                <<right<<" "<<item_array[2]<<endl;
        }
    }

    data.close();
}

it works.

actually i had made a code for myself using the ideas given to me on previous posts

void find()
{

    ifstream data("myRecord.txt");
    string item,line;
    int x=0;
    int y=0;
    string id;

    cout<<"Enter Employee Id: ";
    cin>>id;

    while(!data.eof())
    {
        getline(data,line);
        string item_array[10];
        stringstream stream(line);
        x=0,y=0;

        while(getline(stream,item,','))
        {
            item_array[x]=item;
            x++;
            item_array[x]=item;
            y++;
        }

        if(item_array[0]==id)
        {
            cout<<"***********************************"
                <<"*****************"<<endl;
            cout<<setfill('.')<<left<<setw(35)<<"ID: "
                <<right<<" "<<item_array[0]<<endl;
            cout<<setfill('.')<<left<<setw(35)<<"Name: "
                <<right<<" "<<item_array[1]<<endl;
            cout<<setfill('.')<<left<<setw(35)<<"Rate: "
                <<right<<" "<<item_array[2]<<endl;
        }
    }

    data.close();
}

it works.

This question has already been answered. Start a new discussion instead.