Index: libcfa/src/containers/string.cfa
===================================================================
--- libcfa/src/containers/string.cfa	(revision 5ad2c6c7bab9a4b0819637348bed71fda99dca4e)
+++ libcfa/src/containers/string.cfa	(revision 88001dd7b8549584dfbc667a75b53dcc6164ae6c)
@@ -10,6 +10,6 @@
 // Created On       : Fri Sep 03 11:00:00 2021
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Aug 13 22:50:08 2023
-// Update Count     : 7
+// Last Modified On : Thu Aug 24 11:27:57 2023
+// Update Count     : 89
 //
 
@@ -118,4 +118,34 @@
 }
 
+void getline( ifstream & in, string & str, const char delimit = '\n' ) {
+	// .---------------,
+	// | | | | |...|0|0| check and guard
+	// `---------------'
+	enum { gwd = 256 + 2, wd = gwd - 1 };				// guarded and unguarded width
+	char cstr[gwd];										// read in chunks
+	bool cont = false;;
+
+	cstr[wd] = '\0';									// guard null terminate string
+	try {
+		in | getline( wdi( wd, cstr ), delimit );		// must have room for string terminator
+		if ( eof( in  ) ) return;						// do not change argument
+	} catch( cstring_length * ) {
+		cont = true;									// continue not allowed
+	} finally {
+		str = cstr;										// ok to initialize string
+	} // try
+	for ( ; cont; )  {									// overflow read ?
+		cont = false;
+		try {
+			in | getline( wdi( wd, cstr ), delimit );	// must have room for string terminator
+			if ( eof( in  ) ) return;
+		} catch( cstring_length * ) {
+			cont = true;								// continue not allowed
+		} finally {
+			str += cstr;								// build string chunk at a time
+		} // try
+	} // for
+}
+
 ////////////////////////////////////////////////////////
 // Slicing
Index: libcfa/src/containers/string.hfa
===================================================================
--- libcfa/src/containers/string.hfa	(revision 5ad2c6c7bab9a4b0819637348bed71fda99dca4e)
+++ libcfa/src/containers/string.hfa	(revision 88001dd7b8549584dfbc667a75b53dcc6164ae6c)
@@ -10,6 +10,6 @@
 // Created On       : Fri Sep 03 11:00:00 2021
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Aug 13 22:46:46 2023
-// Update Count     : 4
+// Last Modified On : Wed Aug 23 11:16:14 2023
+// Update Count     : 6
 //
 
@@ -57,4 +57,5 @@
 ifstream & ?|?(ifstream & in, string & s);
 void ?|?( ifstream & in, string & this );
+void getline( ifstream & in, string & this, const char delimit = '\n' );
 
 // Concatenation
