digitalmars.D - readLine and line terminators
- llee (1/1) Jun 18 2008 I'm parsing a cgi request and was using the din.readLine function to get...
- Nick Sabalausky (13/17) Jun 18 2008 I'm not familiar with the details of the text IO APIs, but you could alw...
- llee (2/23) Jun 18 2008 I need din.readLine to read lines that are terminated with '\n\r' with t...
- Nick Sabalausky (19/24) Jun 18 2008 Ahh, I see.
I'm parsing a cgi request and was using the din.readLine function to get each line. readLine will read bytes from a stream until it encounters either '\n' or '\r'. I need it return lines terminated with "\n\r". Does anyone know how to do this. Or if there are any other options.
Jun 18 2008
"llee" <llee goucher.edu> wrote in message news:g3br0o$21np$1 digitalmars.com...I'm parsing a cgi request and was using the din.readLine function to get each line. readLine will read bytes from a stream until it encounters either '\n' or '\r'. I need it return lines terminated with "\n\r". Does anyone know how to do this. Or if there are any other options.I'm not familiar with the details of the text IO APIs, but you could always just wrap it in another function like this: //Psuedocode string ReadLineGuaranteeLineEnding() // Could probably think of a better name { // Read from din.readLine // Check for and remove any trailing '\n' and '\r' // Append "\n\r" // Return result }
Jun 18 2008
Nick Sabalausky Wrote:"llee" <llee goucher.edu> wrote in message news:g3br0o$21np$1 digitalmars.com...I need din.readLine to read lines that are terminated with '\n\r' with these characters removed. Right now, readLine will read a line until it encounters '\n' and return. It will then read the '\r' and return. I wanted to know if there is a way to read a line that is terminated with '\n\r' and return it with these characters removed.I'm parsing a cgi request and was using the din.readLine function to get each line. readLine will read bytes from a stream until it encounters either '\n' or '\r'. I need it return lines terminated with "\n\r". Does anyone know how to do this. Or if there are any other options.I'm not familiar with the details of the text IO APIs, but you could always just wrap it in another function like this: //Psuedocode string ReadLineGuaranteeLineEnding() // Could probably think of a better name { // Read from din.readLine // Check for and remove any trailing '\n' and '\r' // Append "\n\r" // Return result }
Jun 18 2008
"llee" <llee goucher.edu> wrote in message news:g3bt8f$276o$1 digitalmars.com...I need din.readLine to read lines that are terminated with '\n\r' with these characters removed. Right now, readLine will read a line until it encounters '\n' and return. It will then read the '\r' and return. I wanted to know if there is a way to read a line that is terminated with '\n\r' and return it with these characters removed.Ahh, I see. If you do this: auto str = din.readLine(); char c; din.read(c); Does that put the '\n' or '\r' into the 'c' variable? (Or is that character just skipped? If it's just skipped, is it possible to seek back one character and read it?) If so, then maybe you could use that to reconstruct what you need. Or maybe you could just use either "void read(out char x)" or "size_t readBlock(void* buffer, size_t size)" to create your own version of readLine(). Although, unless I'm wrong (and I might be), creatting your own readLine with "read(out char)" might be slow, and creating it with readBlock might mke you lose out on any fancy UTF-interpreting that might be going in the other versions. Or if you're using D1, Tango might have a way of doing what you want. Sorry I can't be of more help than that.
Jun 18 2008