Diferencia entre revisiones de «Stream.readStringUntil()»

De ArduWiki
Saltar a: navegación, buscar
(Página creada con «== Descripción == == Sintaxis == <pre> </pre> == Parametros == == Retorna == == Advertencias == Nada. == Ejemplo == <syntaxhighlight lang="c++"> </syntaxhighlight> =...»)
 
Línea 1: Línea 1:
 
== Descripción ==
 
== Descripción ==
 +
Lee caracteres y los coloca en un [[String]]. La función termina si se ha encontrado el caracter terminador (no lo incluye en la lectura pero sí lo descarta/ignora del flujo), o el tiempo de espera (ver [[Stream.setTimeout()]]) se ha agotado.
  
 
== Sintaxis ==
 
== Sintaxis ==
 
<pre>
 
<pre>
 +
objetoString.readStringUntil(caracter);
 
</pre>
 
</pre>
  
 
== Parametros ==
 
== Parametros ==
 +
;caracter: el caracter terminador ([[char]]).
  
 
== Retorna ==
 
== Retorna ==
 +
El objeto [[String]] resultante de la lectura.
  
 
== Advertencias ==
 
== Advertencias ==
Nada.
+
* Hay un "bug" o fallo con esta función: si el flujo de entrada es constante (tiempo de espera nunca se agota) o lo suficientemente grande, y nunca se encuentra el caracter terminador; se corre el riesgo de colgar completamente el programa. La razón se debe a que, conceptualmente, [[String]] es ilimitado en tamaño; pero como la [[SRAM]] no es así, eventualmente el programa llegará a colapsar.
  
 
== Ejemplo ==
 
== Ejemplo ==
 
<syntaxhighlight lang="c++">
 
<syntaxhighlight lang="c++">
 +
if (archivo.available()) {
 +
  Serial.print(F("Linea de texto leida: \""));
 +
  Serial.print(archivo.readStringUntil('\r')); // Ojo con el tamaño, que puede que de aquí no pase u ocurra comportamiento indefinido.
 +
  Serial.println('\"');
 +
  archivo.read(); // Descarta el '\n' que suele venir con el '\r'
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  

Revisión del 00:09 11 jul 2018

Descripción

Lee caracteres y los coloca en un String. La función termina si se ha encontrado el caracter terminador (no lo incluye en la lectura pero sí lo descarta/ignora del flujo), o el tiempo de espera (ver Stream.setTimeout()) se ha agotado.

Sintaxis

objetoString.readStringUntil(caracter);

Parametros

caracter
el caracter terminador (char).

Retorna

El objeto String resultante de la lectura.

Advertencias

  • Hay un "bug" o fallo con esta función: si el flujo de entrada es constante (tiempo de espera nunca se agota) o lo suficientemente grande, y nunca se encuentra el caracter terminador; se corre el riesgo de colgar completamente el programa. La razón se debe a que, conceptualmente, String es ilimitado en tamaño; pero como la SRAM no es así, eventualmente el programa llegará a colapsar.

Ejemplo

if (archivo.available()) {
  Serial.print(F("Linea de texto leida: \""));
  Serial.print(archivo.readStringUntil('\r')); // Ojo con el tamaño, que puede que de aquí no pase u ocurra comportamiento indefinido.
  Serial.println('\"');
  archivo.read(); // Descarta el '\n' que suele venir con el '\r'
}

Vea también

Referencias