Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
I'm porting yet another plugin to R20. In this plugin, I have to parse lines that I read, line by line, from a file. I was using std functions, namely getline. But I'm getting "No matching function for call to 'getline'" errors. Is it a limitation of the new coding environment? How can I read a stream, line by line and then, parse the line element by element (elements are separated by ', ' (a comma and a space)?
Hi Rui, thanks for writing us.
With regard to the issue reported, it's likely that, being getline defined in the std:: namespace you're invoking it without explicitly using the namespace being the std namespace not being used by default.
Invoking std::getline() should then fix the issue on your side.
Being said that, I warmly recommend to get rid of using methods outside of Cinema 4D API and instead to have a look at the InputStream Manual and to ParseHelper::ConvertTextToLines static method.
Best, Riccardo
I will try it, Riccardo. The "beauty" of getline is that I can parse value by value, and the line will get shorter automatically, as I read values from it. Since I use it to parse OBJ and FBX files, changing methods would require me to recode everything. But, sometimes, we just have to bite the bullet and re-write stuff, I know
I still get the "No matching function for call to 'getlin'" error, for example in this code, even after replacing getline with std::getline:
void polypaint::read_line_indexes(string line, BaseContainer &bc) { std::stringstream ss(line); std::string field; Int32 index;
while (std::getline(ss, field, ', ')) { index = atoi(field.c_str()); bc.SetInt32(store_index_count, index); store_index_count++; }
}
Hi rui_mac,
std::getline() in its signature accepts std::basic_istream and not std::stringstream and this is the reason why you're provided back with such an error.
Riccardo
It is so weird that it worked in versions pre R20. Well, I will have to find a new solution, then.