Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / clr / src / BCL / System / IO / StringReader.cs / 1 / StringReader.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: StringReader ** ** Purpose: For reading text from strings ** ** ===========================================================*/ using System; using System.Runtime.InteropServices; namespace System.IO { // This class implements a text reader that reads from a string. // [Serializable()] [System.Runtime.InteropServices.ComVisible(true)] public class StringReader : TextReader { private String _s; private int _pos; private int _length; public StringReader(String s) { if (s == null) throw new ArgumentNullException("s"); _s = s; _length = s == null? 0: s.Length; } // Closes this StringReader. Following a call to this method, the String // Reader will throw an ObjectDisposedException. public override void Close() { Dispose(true); } protected override void Dispose(bool disposing) { _s = null; _pos = 0; _length = 0; base.Dispose(disposing); } // Returns the next available character without actually reading it from // the underlying string. The current position of the StringReader is not // changed by this operation. The returned value is -1 if no further // characters are available. // public override int Peek() { if (_s == null) __Error.ReaderClosed(); if (_pos == _length) return -1; return _s[_pos]; } // Reads the next character from the underlying string. The returned value // is -1 if no further characters are available. // public override int Read() { if (_s == null) __Error.ReaderClosed(); if (_pos == _length) return -1; return _s[_pos++]; } // Reads a block of characters. This method will read up to count // characters from this StringReader into the buffer character // array starting at position index. Returns the actual number of // characters read, or zero if the end of the string is reached. // public override int Read([In, Out] char[] buffer, int index, int count) { if (buffer==null) throw new ArgumentNullException("buffer", Environment.GetResourceString("ArgumentNull_Buffer")); if (index < 0) throw new ArgumentOutOfRangeException("index", Environment.GetResourceString("ArgumentOutOfRange_NeedNonNegNum")); if (count < 0) throw new ArgumentOutOfRangeException("count", Environment.GetResourceString("ArgumentOutOfRange_NeedNonNegNum")); if (buffer.Length - index < count) throw new ArgumentException(Environment.GetResourceString("Argument_InvalidOffLen")); if (_s == null) __Error.ReaderClosed(); int n = _length - _pos; if (n > 0) { if (n > count) n = count; _s.CopyTo(_pos, buffer, index, n); _pos += n; } return n; } public override String ReadToEnd() { if (_s == null) __Error.ReaderClosed(); String s; if (_pos==0) s = _s; else s = _s.Substring(_pos, _length - _pos); _pos = _length; return s; } // Reads a line. A line is defined as a sequence of characters followed by // a carriage return ('\r'), a line feed ('\n'), or a carriage return // immediately followed by a line feed. The resulting string does not // contain the terminating carriage return and/or line feed. The returned // value is null if the end of the underlying string has been reached. // public override String ReadLine() { if (_s == null) __Error.ReaderClosed(); int i = _pos; while (i < _length) { char ch = _s[i]; if (ch == '\r' || ch == '\n') { String result = _s.Substring(_pos, i - _pos); _pos = i + 1; if (ch == '\r' && _pos < _length && _s[_pos] == '\n') _pos++; return result; } i++; } if (i > _pos) { String result = _s.Substring(_pos, i - _pos); _pos = i; return result; } return null; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: StringReader ** ** Purpose: For reading text from strings ** ** ===========================================================*/ using System; using System.Runtime.InteropServices; namespace System.IO { // This class implements a text reader that reads from a string. // [Serializable()] [System.Runtime.InteropServices.ComVisible(true)] public class StringReader : TextReader { private String _s; private int _pos; private int _length; public StringReader(String s) { if (s == null) throw new ArgumentNullException("s"); _s = s; _length = s == null? 0: s.Length; } // Closes this StringReader. Following a call to this method, the String // Reader will throw an ObjectDisposedException. public override void Close() { Dispose(true); } protected override void Dispose(bool disposing) { _s = null; _pos = 0; _length = 0; base.Dispose(disposing); } // Returns the next available character without actually reading it from // the underlying string. The current position of the StringReader is not // changed by this operation. The returned value is -1 if no further // characters are available. // public override int Peek() { if (_s == null) __Error.ReaderClosed(); if (_pos == _length) return -1; return _s[_pos]; } // Reads the next character from the underlying string. The returned value // is -1 if no further characters are available. // public override int Read() { if (_s == null) __Error.ReaderClosed(); if (_pos == _length) return -1; return _s[_pos++]; } // Reads a block of characters. This method will read up to count // characters from this StringReader into the buffer character // array starting at position index. Returns the actual number of // characters read, or zero if the end of the string is reached. // public override int Read([In, Out] char[] buffer, int index, int count) { if (buffer==null) throw new ArgumentNullException("buffer", Environment.GetResourceString("ArgumentNull_Buffer")); if (index < 0) throw new ArgumentOutOfRangeException("index", Environment.GetResourceString("ArgumentOutOfRange_NeedNonNegNum")); if (count < 0) throw new ArgumentOutOfRangeException("count", Environment.GetResourceString("ArgumentOutOfRange_NeedNonNegNum")); if (buffer.Length - index < count) throw new ArgumentException(Environment.GetResourceString("Argument_InvalidOffLen")); if (_s == null) __Error.ReaderClosed(); int n = _length - _pos; if (n > 0) { if (n > count) n = count; _s.CopyTo(_pos, buffer, index, n); _pos += n; } return n; } public override String ReadToEnd() { if (_s == null) __Error.ReaderClosed(); String s; if (_pos==0) s = _s; else s = _s.Substring(_pos, _length - _pos); _pos = _length; return s; } // Reads a line. A line is defined as a sequence of characters followed by // a carriage return ('\r'), a line feed ('\n'), or a carriage return // immediately followed by a line feed. The resulting string does not // contain the terminating carriage return and/or line feed. The returned // value is null if the end of the underlying string has been reached. // public override String ReadLine() { if (_s == null) __Error.ReaderClosed(); int i = _pos; while (i < _length) { char ch = _s[i]; if (ch == '\r' || ch == '\n') { String result = _s.Substring(_pos, i - _pos); _pos = i + 1; if (ch == '\r' && _pos < _length && _s[_pos] == '\n') _pos++; return result; } i++; } if (i > _pos) { String result = _s.Substring(_pos, i - _pos); _pos = i; return result; } return null; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- nulltextcontainer.cs
- PropertyOrder.cs
- OrCondition.cs
- SerializationObjectManager.cs
- ContentOperations.cs
- BitmapInitialize.cs
- MetafileHeaderWmf.cs
- WindowsListViewItem.cs
- WsatTransactionInfo.cs
- SocketAddress.cs
- BitmapMetadata.cs
- NullReferenceException.cs
- EncodingNLS.cs
- AutomationIdentifier.cs
- SystemThemeKey.cs
- AsyncWaitHandle.cs
- XPathNavigatorKeyComparer.cs
- Zone.cs
- DataTable.cs
- HostedImpersonationContext.cs
- NullableFloatAverageAggregationOperator.cs
- IListConverters.cs
- DBCSCodePageEncoding.cs
- ToolZone.cs
- LocatorPart.cs
- SizeFConverter.cs
- StickyNoteContentControl.cs
- ClientSponsor.cs
- ListCollectionView.cs
- TagNameToTypeMapper.cs
- HtmlImage.cs
- Pool.cs
- BuildProviderUtils.cs
- AsmxEndpointPickerExtension.cs
- EntityDataSourceContainerNameConverter.cs
- WindowsProgressbar.cs
- LazyLoadBehavior.cs
- GridViewDeleteEventArgs.cs
- DeferredElementTreeState.cs
- MediaScriptCommandRoutedEventArgs.cs
- ViewCellRelation.cs
- DownloadProgressEventArgs.cs
- BaseValidatorDesigner.cs
- DESCryptoServiceProvider.cs
- NumberFormatInfo.cs
- Enum.cs
- TableHeaderCell.cs
- UiaCoreProviderApi.cs
- BrowserCapabilitiesCompiler.cs
- DoubleAnimationUsingPath.cs
- SafeEventLogWriteHandle.cs
- MulticastDelegate.cs
- Triangle.cs
- InputScopeManager.cs
- StreamInfo.cs
- PropertyReferenceExtension.cs
- ToolStripAdornerWindowService.cs
- ArgumentNullException.cs
- TripleDESCryptoServiceProvider.cs
- DbProviderSpecificTypePropertyAttribute.cs
- Annotation.cs
- DataContractSerializerSection.cs
- BaseAsyncResult.cs
- SerializeAbsoluteContext.cs
- SuppressIldasmAttribute.cs
- SiteMapProvider.cs
- Error.cs
- ResourcesChangeInfo.cs
- ReturnValue.cs
- AccessText.cs
- PrincipalPermission.cs
- ForceCopyBuildProvider.cs
- ConnectionsZoneAutoFormat.cs
- ExternalDataExchangeService.cs
- Queue.cs
- XmlSchemaSimpleTypeList.cs
- PngBitmapDecoder.cs
- DataGridViewRowPrePaintEventArgs.cs
- DefinitionBase.cs
- ApplicationFileCodeDomTreeGenerator.cs
- ItemTypeToolStripMenuItem.cs
- CacheOutputQuery.cs
- BindStream.cs
- JavascriptCallbackBehaviorAttribute.cs
- AttributeParameterInfo.cs
- SR.Designer.cs
- SmtpDigestAuthenticationModule.cs
- HtmlFormWrapper.cs
- DynamicILGenerator.cs
- AppSettingsReader.cs
- CodeValidator.cs
- TypeConverterHelper.cs
- XPathEmptyIterator.cs
- MetadataCacheItem.cs
- Size3D.cs
- DataRowView.cs
- RegexRunner.cs
- Normalization.cs
- TextServicesProperty.cs
- MenuCommandService.cs