Object returned by Table::ReadRows(), enumerates rows in the response.
Thread-safety
Two threads operating concurrently on the same instance of this class or the iterators obtained from it are not guaranteed to work.
Iterate over the results of ReadRows() using the STL idioms.
The returned iterator is a single-pass input iterator that reads rows from the RowReader when incremented. The first row may be read when the iterator is constructed.
Creating, and particularly incrementing, multiple iterators on the same RowReader is unsupported and can produce incorrect results.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-14 UTC."],[[["\u003cp\u003eThis webpage details the \u003ccode\u003eRowReader\u003c/code\u003e class, which is responsible for enumerating rows in the response received from \u003ccode\u003eTable::ReadRows()\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eRowReader\u003c/code\u003e class is not thread-safe when multiple threads operate on the same instance or its iterators concurrently.\u003c/p\u003e\n"],["\u003cp\u003eThe webpage provides documentation for multiple versions of \u003ccode\u003eRowReader\u003c/code\u003e, ranging from version 2.13.0 up to the latest release candidate 2.37.0-rc.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eRowReader\u003c/code\u003e objects have constructors that take various parameters such as client, table name, row set, rows limit, filter, retry and backoff policies, and more.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eRowReader\u003c/code\u003e provides functions such as \u003ccode\u003ebegin()\u003c/code\u003e, \u003ccode\u003eend()\u003c/code\u003e, and \u003ccode\u003eCancel()\u003c/code\u003e, and an \u003ccode\u003eiterator\u003c/code\u003e type alias, for interacting with the rows in the response.\u003c/p\u003e\n"]]],[],null,["# Class RowReader (2.13.0)\n\nVersion 2.13.0keyboard_arrow_down\n\n- [2.42.0-rc (latest)](/cpp/docs/reference/bigtable/latest/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.41.0](/cpp/docs/reference/bigtable/2.41.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.40.0](/cpp/docs/reference/bigtable/2.40.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.39.0](/cpp/docs/reference/bigtable/2.39.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.38.0](/cpp/docs/reference/bigtable/2.38.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.37.0](/cpp/docs/reference/bigtable/2.37.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.36.0](/cpp/docs/reference/bigtable/2.36.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.35.0](/cpp/docs/reference/bigtable/2.35.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.34.0](/cpp/docs/reference/bigtable/2.34.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.33.0](/cpp/docs/reference/bigtable/2.33.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.32.0](/cpp/docs/reference/bigtable/2.32.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.31.0](/cpp/docs/reference/bigtable/2.31.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.30.0](/cpp/docs/reference/bigtable/2.30.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.29.0](/cpp/docs/reference/bigtable/2.29.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.28.0](/cpp/docs/reference/bigtable/2.28.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.27.0](/cpp/docs/reference/bigtable/2.27.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.26.0](/cpp/docs/reference/bigtable/2.26.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.25.1](/cpp/docs/reference/bigtable/2.25.1/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.24.0](/cpp/docs/reference/bigtable/2.24.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.23.0](/cpp/docs/reference/bigtable/2.23.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.22.1](/cpp/docs/reference/bigtable/2.22.1/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.21.0](/cpp/docs/reference/bigtable/2.21.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.20.0](/cpp/docs/reference/bigtable/2.20.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.19.0](/cpp/docs/reference/bigtable/2.19.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.18.0](/cpp/docs/reference/bigtable/2.18.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.17.0](/cpp/docs/reference/bigtable/2.17.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.16.0](/cpp/docs/reference/bigtable/2.16.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.15.1](/cpp/docs/reference/bigtable/2.15.1/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.14.0](/cpp/docs/reference/bigtable/2.14.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.13.0](/cpp/docs/reference/bigtable/2.13.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.12.0](/cpp/docs/reference/bigtable/2.12.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader)\n- [2.11.0](/cpp/docs/reference/bigtable/2.11.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader) \nObject returned by [`Table::ReadRows()`](/cpp/docs/reference/bigtable/2.13.0/classgoogle_1_1cloud_1_1bigtable_1_1Table#classgoogle_1_1cloud_1_1bigtable_1_1Table_1a337d7204d6ca65ccf7824a53ead0dfdb), enumerates rows in the response. \n\n###### Thread-safety\n\nTwo threads operating concurrently on the same instance of this class or the iterators obtained from it are **not** guaranteed to work.\nIterate over the results of ReadRows() using the STL idioms.\n\nConstructors\n------------\n\n### RowReader()\n\nDefault constructs an empty [RowReader](/cpp/docs/reference/bigtable/2.13.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader).\n\n### RowReader(std::shared_ptr\\\u003c DataClient \\\u003e, std::string, RowSet, std::int64_t, Filter, std::unique_ptr\\\u003c RPCRetryPolicy \\\u003e, std::unique_ptr\\\u003c RPCBackoffPolicy \\\u003e, MetadataUpdatePolicy, std::unique_ptr\\\u003c internal::ReadRowsParserFactory \\\u003e)\n\n### RowReader(std::shared_ptr\\\u003c DataClient \\\u003e, std::string, std::string, RowSet, std::int64_t, Filter, std::unique_ptr\\\u003c RPCRetryPolicy \\\u003e, std::unique_ptr\\\u003c RPCBackoffPolicy \\\u003e, MetadataUpdatePolicy, std::unique_ptr\\\u003c internal::ReadRowsParserFactory \\\u003e)\n\n### RowReader(RowReader \\&\\&)\n\nFunctions\n---------\n\n### begin()\n\nInput iterator over rows in the response. \nThe returned iterator is a single-pass input iterator that reads rows from the [RowReader](/cpp/docs/reference/bigtable/2.13.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader) when incremented. The first row may be read when the iterator is constructed.\n\nCreating, and particularly incrementing, multiple iterators on the same [RowReader](/cpp/docs/reference/bigtable/2.13.0/classgoogle_1_1cloud_1_1bigtable_1_1RowReader) is unsupported and can produce incorrect results.\n\nRetry and backoff policies are honored.\n\n### end()\n\nEnd iterator over the rows in the response.\n\n### Cancel()\n\nGracefully terminate a streaming read. \nInvalidates iterators.\n\nType Aliases\n------------\n\n### iterator\n\n**Alias Of** : `StreamRange\u003c Row \u003e::iterator`"]]