Kind of a basic question but I’m having troubles thinking of a solution so I need a push in the right direction.
I have an input file that I’m pulling in, and I have to put it into one string variable. The problem is I need to split this string up into different things. There will be 3 strings and 1 int. They are separated by a ‘:’.
I know I can find the position of the first ‘:’ by find(), but I really don’t know how to progress through the string, for each thing and put it into it’s own string / int.
The actual input from the file looks something like this:
A:PEP:909:Inventory Item
A is going to be command I have to execute… so that will be a string. PEP is a key, needs to be a string. 909 is an int.
and the last is a string.
So what I think I want to do is have 3 string var’s, and 1 int and get all those things put into their respective variables.
So I think I’ll end up wanting to conver this C++ string to a C string so I can use atoi to convert the one section to an int.
With C-style strings you can use strtok() to do this. You could also use sscanf()
But since you’re dealing with C++, you probably want to stick with built in std::string functions. As such you can use find(). Find has a form which takes a second argument which is the offset to start searching. So you can do find( ‘:’ ) to find the first instance, and then use find( ‘:’, firstIndex+1 ) to find the next instances, where firstIndex is the value returned by the first call to find().