本文整理汇总了C++中std::basic_istream类的典型用法代码示例。如果您正苦于以下问题:C++ basic_istream类的具体用法?C++ basic_istream怎么用?C++ basic_istream使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了basic_istream类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: in_quote
template <class Output, class Ch, class Tr, class IsSpecial> inline
Output
in_quote(std::basic_istream<Ch, Tr> &i, Output out, IsSpecial is_special = IsSpecial(),
char quote_char='"', char escape_char='\\')
{
char c;
if (i.get(c)) {
*out++=c;
if (c==quote_char) { // quoted - end delimited by unescape quote
for (;;) {
if (!i.get(c))
goto fail;
if (c==quote_char)
break;
if (c==escape_char)
if (!i.get(c))
goto fail;
*out++=c;
}
} else { // unquoted - end delimited by an is_special char
while (i.get(c)) {
if (is_special(c)) {
i.unget();
break;
}
*out++=c;
}
}
} // else end of stream. shouldn't interpret as empty token but not throwing exception either. check status of i before you use.
return out;
fail:
throw std::runtime_error("end of file reached when parsing quoted string (in_quote)");
}
开发者ID:zjucsxxd,项目名称:carmel,代码行数:33,代码来源:quote.hpp
示例2: GetColumn
int TablePaser::GetColumn(stringstream& ss_str, std::basic_istream<char>& in_put, string& column)
{
column = "";
if (ss_str.eof())
return -1;
char cur_char[2];
cur_char[1] = 0;
char separator = ' ';
if (ss_str.get(cur_char[0]).eof())
return 1;
if (cur_char[0] == ' ')
return 1;
else if (cur_char[0] == '"')
separator = '"';
else
column += string(cur_char);
while (1)
{
if (ss_str.eof())
{
if (separator == '"')
{
if (in_put.eof())
return 0;
column += string("\n\0");
ss_str.clear();
in_put.getline(LineData, LINE_DATA_MAX);
ss_str << LineData;
}
else
return 0;
}
ss_str.getline(LineData, 4096, separator);
column += LineData;
//column.append(LineData);
if (ss_str.eof())
continue;
if (separator == ' ')
return 1;
else if (separator == '"')
{
if (ss_str.eof())
return 0;
ss_str.get(cur_char[0]);
if (ss_str.eof())
return 1;
else if (cur_char[0] == ' ')
return 1;
else if (cur_char[0] != separator)
separator = ' ';
//column.push_back(cur_char);
column += string(cur_char);
}
}
return -1;
}
开发者ID:Garfield-Chen,项目名称:tng,代码行数:60,代码来源:table_paser.cpp
示例3: buffer
std::basic_istream<e,t>& operator>>(std::basic_istream<e,t>& in, const e& cliteral) {
e buffer(0); //get buffer
in >> buffer; //read data
if (buffer != cliteral) //if it failed
in.setstate(in.rdstate() | std::ios::badbit); //set the state
return in;
}
开发者ID:CCJY,项目名称:coliru,代码行数:7,代码来源:main.cpp
示例4: GetLine
int TablePaser::GetLine(std::basic_istream<char>& in_put, vector<string>& columns)
{
if (in_put.eof())
return -1;
std::streamoff i = in_put.tellg();
memset(LineData, 0, LINE_DATA_MAX);
in_put.getline(LineData, LINE_DATA_MAX);
char* r_ch = strchr(LineData, '\r');
if (r_ch)
{
in_put.seekg(i + (r_ch - LineData) + 1);
*r_ch = '\0';
}
if (strlen(LineData) == 0)
return GetLine(in_put, columns);
stringstream ss_str;
ss_str << LineData;
int ret = 1;
string column;
while (ret == 1)
{
if ((ret = GetColumn(ss_str, in_put, column)) == -1)
break;
columns.push_back(column);
}
if (in_put.eof())
return 0;
return 1;
}
开发者ID:Garfield-Chen,项目名称:tng,代码行数:33,代码来源:table_paser.cpp
示例5: read_xml_internal
void read_xml_internal(std::basic_istream<typename Ptree::key_type::value_type> &stream,
Ptree &pt,
int flags,
const std::string &filename)
{
typedef typename Ptree::key_type::value_type Ch;
// Create and load document from stream
stream.unsetf(std::ios::skipws);
if (!stream.good())
throw xml_parser_error("read error", filename, 0);
std::vector<Ch> buf;
std::copy(std::istream_iterator<Ch>(stream), std::istream_iterator<Ch>(), std::back_inserter(buf));
buf.push_back(0); // zero-terminate
unsigned int pugi_flags = pugi::parse_w3c;
if ( flags & no_comments )
pugi_flags = pugi_flags & ~pugi::parse_comments;
pugi::xml_parser parser(&buf[0], pugi_flags);
pugi::xml_node doc = parser.document();
// Create ptree from nodes
Ptree local;
for ( pugi::xml_node child = doc.first_child(); child; child = child.next_sibling())
read_xml_node( child, local, flags );
// Swap local and result ptrees
pt.swap(local);
}
开发者ID:gbucknell,项目名称:fsc-sdk,代码行数:32,代码来源:xml_parser_read_pugixml.hpp
示例6:
std::basic_istream<_CharT, _Traits> & operator>>(std::basic_istream<_CharT, _Traits> & __is,
const get_time_manip<_CharT> & __x)
{
if (!reinterpret_cast<stream_buf_impl<_CharT, _Traits> *>(__is.rdbuf())->parse(__x))
__is.setstate(std::ios_base::failbit);
return __is;
}
开发者ID:milchakov,项目名称:omim,代码行数:7,代码来源:get_time.hpp
示例7: ok
inline std::basic_istream<CharT,Traits>&
operator>>(std::basic_istream<CharT,Traits>& is, uuid& id)
{
typedef typename std::basic_istream<CharT,Traits>::sentry sentry_t;
sentry_t ok(is);
if (ok)
{
CharT c;
if (!is.get(c))
return is;
is.unget();
if (c == is.widen('{'))
{
CharT buf[38+1];
if (!is.read(buf, 38))
return is;
buf[38] = CharT();
id = uuid(buf);
}
else
{
CharT buf[36+1];
if (!is.read(buf, 36))
return is;
buf[36] = CharT();
id = uuid(buf);
}
}
return is;
}
开发者ID:fpelliccioni,项目名称:hamigaki,代码行数:32,代码来源:uuid.hpp
示例8: load
void load(std::basic_istream<char> &stream, xml_node &node)
{
stream.unsetf(std::ios::skipws);
std::vector<char> v(std::istreambuf_iterator<char>(stream.rdbuf()),
std::istreambuf_iterator<char>());
if (!stream.good())
{
throw config_error("Could not load map file", 0, filename_);
}
v.push_back(0); // zero-terminate
try
{
// Parse using appropriate flags
const int f_tws = rapidxml::parse_normalize_whitespace
| rapidxml::parse_trim_whitespace;
rapidxml::xml_document<> doc;
doc.parse<f_tws>(&v.front());
for (rapidxml::xml_node<char> *child = doc.first_node();
child; child = child->next_sibling())
{
populate_tree(child, node);
}
}
catch (rapidxml::parse_error &e)
{
long line = static_cast<long>(
std::count(&v.front(), e.where<char>(), '\n') + 1);
throw config_error(e.what(), line, filename_);
}
}
开发者ID:mayfourth,项目名称:mapnik,代码行数:31,代码来源:rapidxml_loader.cpp
示例9: load
/**
* @brief Deserialize the integer value from the specified input stream.
* @param __s Reference to the input stream.
*/
void
load(std::basic_istream<CharT, Traits> &__s)
{
// We must ensure that subsequent actions will be performed
// for very likely integer value, otherwise and exception
// should be raised.
if (__s.peek() != basic_value_type::integer_token) {
throw type_error(
"bencode::integer::load the specified stream does "
"not contain interpretable bencode integer value\n");
}
// Read the leading "i" symbol from the provided stream.
__s.get();
// Define the integer symbol representation placeholder.
std::basic_stringstream<CharT, Traits> __i;
// Define the input stream iterator of the provided stream to
// be able to read the integer value symbol by symbol.
auto __si = std::istream_iterator<CharT, CharT, Traits>(__s);
// Define the output stream to as a buffer for the integer
// value, which will be later converted.
auto __ival = std::ostream_iterator<CharT, CharT, Traits>(__i);
// Copy the values from the input stream into the integer
// placeholder string stream.
auto __result = copy_until(__si, __ival,
[&__s](const CharT& __ch) {
// Additionally, check that we did not exceed the
// length of the stream to prevent hangs.
return !__s.eof() && __ch != basic_value_type::end_token;
}, basic_value_type::integer_length);
// Covert the value from the string into the integer.
__i >> _M_value;
// The "e" symbol should be already extracted at this moment,
// so validate that the iterator pointing right to it.
if (*__result != basic_value_type::end_token) {
std::ostringstream __error;
__error << "bencode::integer::load the end of the integer "
"`e` expected, but `" << CharT(*__result) << "` found\n";
throw encoding_error(__error.str());
}
// Validate that decoded value is an actual integer.
if (!_M_value && __i.str() != std::basic_string<
CharT, Traits>(1, CharT('0'))) {
std::ostringstream __error;
__error << "bencode::integer::load the specified "
"value is not a number\n";
throw value_error(__error.str());
}
}
开发者ID:ybubnov,项目名称:libbencode,代码行数:63,代码来源:integer.hpp
示例10:
inline std::basic_istream<Elem, Traits>&
operator>>(std::basic_istream<Elem, Traits>& lhs, sprout::optional<T>& rhs) {
if (lhs.good()) {
int d = lhs.get();
if (d == ' ') {
T x;
lhs >> x;
rhs = x;
} else {
开发者ID:osyo-manga,项目名称:Sprout,代码行数:9,代码来源:io.hpp
示例11: e
std::basic_istream<e,t>& operator>>(std::basic_istream<e,t>& in, const e(&sliteral)[N]) {
e buffer[N-1] = {}; //get buffer
in >> buffer[0]; //skips whitespace
if (N>2)
in.read(buffer+1, N-2); //read the rest
if (strncmp(buffer, sliteral, N-1)) //if it failed
in.setstate(in.rdstate() | std::ios::badbit); //set the state
return in;
}
开发者ID:CCJY,项目名称:coliru,代码行数:9,代码来源:main.cpp
示例12: file
//! Loads file into the memory. Data will be automatically destroyed by the
// destructor
//! \param stream Stream to load from
file(std::basic_istream<Ch> &stream) {
using namespace std;
// Load data and add terminating 0
stream.unsetf(ios::skipws);
m_data.assign(istreambuf_iterator<Ch>(stream), istreambuf_iterator<Ch>());
if (stream.fail() || stream.bad())
throw runtime_error("error reading stream");
m_data.push_back(0);
}
开发者ID:Coldrain,项目名称:cpp-netlib,代码行数:13,代码来源:rapidxml_utils.hpp
示例13:
std::basic_istream< CharT, TraitsT >& operator>> (std::basic_istream< CharT, TraitsT >& strm, point& p)
{
if (strm.good())
{
CharT left_brace = static_cast< CharT >(0), comma = static_cast< CharT >(0), right_brace = static_cast< CharT >(0);
strm.setf(std::ios_base::skipws);
strm >> left_brace >> p.m_x >> comma >> p.m_y >> right_brace;
if (left_brace != '(' || comma != ',' || right_brace != ')')
strm.setstate(std::ios_base::failbit);
}
开发者ID:OggYiu,项目名称:rag-engine,代码行数:10,代码来源:extension_filter_parser_custom_rel.cpp
示例14: read_xml_internal
void read_xml_internal(std::basic_istream<
typename Ptree::key_type::value_type> &stream,
Ptree &pt,
int flags,
const std::string &filename)
{
typedef typename Ptree::key_type::value_type Ch;
using namespace detail::pdalboostrapidxml;
// Load data into vector
stream.unsetf(std::ios::skipws);
std::vector<Ch> v(std::istreambuf_iterator<Ch>(stream.rdbuf()),
std::istreambuf_iterator<Ch>());
if (!stream.good())
BOOST_PROPERTY_TREE_THROW(
xml_parser_error("read error", filename, 0));
v.push_back(0); // zero-terminate
try {
// Parse using appropriate flags
const int f_tws = parse_normalize_whitespace
| parse_trim_whitespace;
const int f_c = parse_comment_nodes;
// Some compilers don't like the bitwise or in the template arg.
const int f_tws_c = parse_normalize_whitespace
| parse_trim_whitespace
| parse_comment_nodes;
xml_document<Ch> doc;
if (flags & no_comments) {
if (flags & trim_whitespace)
doc.BOOST_NESTED_TEMPLATE parse<f_tws>(&v.front());
else
doc.BOOST_NESTED_TEMPLATE parse<0>(&v.front());
} else {
if (flags & trim_whitespace)
doc.BOOST_NESTED_TEMPLATE parse<f_tws_c>(&v.front());
else
doc.BOOST_NESTED_TEMPLATE parse<f_c>(&v.front());
}
// Create ptree from nodes
Ptree local;
for (xml_node<Ch> *child = doc.first_node();
child; child = child->next_sibling())
read_xml_node(child, local, flags);
// Swap local and result ptrees
pt.swap(local);
} catch (parse_error &e) {
long line = static_cast<long>(
std::count(&v.front(), e.where<Ch>(), Ch('\n')) + 1);
BOOST_PROPERTY_TREE_THROW(
xml_parser_error(e.what(), filename, line));
}
}
开发者ID:EricAlex,项目名称:PDAL,代码行数:55,代码来源:xml_parser_read_rapidxml.hpp
示例15: ok
std::basic_istream<ch, char_traits>& operator>>(std::basic_istream<ch, char_traits> &is, uuid &u)
{
const typename std::basic_istream<ch, char_traits>::sentry ok(is);
if (ok) {
unsigned char data[16];
typedef std::ctype<ch> ctype_t;
ctype_t const& ctype = std::use_facet<ctype_t>(is.getloc());
ch xdigits[16];
{
char szdigits[] = "0123456789ABCDEF";
ctype.widen(szdigits, szdigits+16, xdigits);
}
ch*const xdigits_end = xdigits+16;
ch c;
for (std::size_t i=0; i<u.size() && is; ++i) {
is >> c;
c = ctype.toupper(c);
ch* f = std::find(xdigits, xdigits_end, c);
if (f == xdigits_end) {
is.setstate(std::ios_base::failbit);
break;
}
unsigned char byte = static_cast<unsigned char>(std::distance(&xdigits[0], f));
is >> c;
c = ctype.toupper(c);
f = std::find(xdigits, xdigits_end, c);
if (f == xdigits_end) {
is.setstate(std::ios_base::failbit);
break;
}
byte <<= 4;
byte |= static_cast<unsigned char>(std::distance(&xdigits[0], f));
data[i] = byte;
if (is) {
if (i == 3 || i == 5 || i == 7 || i == 9) {
is >> c;
if (c != is.widen('-')) is.setstate(std::ios_base::failbit);
}
}
}
if (is) {
std::copy(data, data+16, u.begin());
}
}
开发者ID:boostorg,项目名称:uuid,代码行数:54,代码来源:uuid_io.hpp
示例16:
inline
std::basic_istream<CharType, CharTrait>&
operator>>(std::basic_istream<CharType, CharTrait>& in, optional<T>& v)
{
if (in.good())
{
int d = in.get();
if (d == ' ')
{
T x;
in >> x;
v = x;
}
开发者ID:12307,项目名称:EasyDarwin,代码行数:13,代码来源:optional_io.hpp
示例17: T
inline SPROUT_NON_CONSTEXPR std::basic_istream<Elem, Traits>&
operator>>(std::basic_istream<Elem, Traits>& lhs, sprout::math::quaternion<T>& rhs) {
std::ctype<Elem> const& ct = std::use_facet<std::ctype<Elem> >(lhs.getloc());
T a = T();
T b = T();
T c = T();
T d = T();
sprout::complex<T> u = sprout::complex<T>();
sprout::complex<T> v = sprout::complex<T>();
Elem ch = Elem();
char cc;
lhs >> ch;
if (!lhs.good()) {
goto finish;
}
cc = ct.narrow(ch, char());
if (cc == '(') {
lhs >> ch;
if (!lhs.good()) {
goto finish;
}
cc = ct.narrow(ch, char());
if (cc == '(') {
lhs.putback(ch);
lhs >> u;
a = u.real();
b = u.imag();
if (!lhs.good()) {
goto finish;
}
lhs >> ch;
if (!lhs.good()) {
goto finish;
}
cc = ct.narrow(ch, char());
if (cc == ')') {
rhs = sprout::math::quaternion<T>(a, b);
} else if (cc == ',') {
lhs >> v;
c = v.real();
d = v.imag();
if (!lhs.good()) {
goto finish;
}
lhs >> ch;
if (!lhs.good()) {
goto finish;
}
cc = ct.narrow(ch, char());
if (cc == ')') {
rhs = sprout::math::quaternion<T>(a, b, c, d);
} else {
lhs.setstate(std::ios_base::failbit);
}
} else {
开发者ID:kundor,项目名称:Sprout,代码行数:55,代码来源:stream_operators.hpp
示例18: str
std::basic_istream<CharT>& operator>>(std::basic_istream<CharT>& is, RMap<StrType>& param){
size_t bufferSize = is.rdbuf()->in_avail();
char* buffer = new CharT[bufferSize+1];
is.read(buffer, bufferSize);
buffer[bufferSize] = '\0';
StrType str(buffer);
typename StrType::iterator it = str.begin();
parseMap<StrType>(param, it);
delete[] buffer;
return is;
}
开发者ID:SadaleNet,项目名称:lemonToolkit,代码行数:14,代码来源:json.hpp
示例19: catch
inline std::basic_istream<char_t, traits_t>& operator>>(std::basic_istream<char_t, traits_t>& is, std::tr1::basic_regex<char_t, rx_traits_t>& regex) {
std::basic_string<char_t, traits_t> buff;
std::getline(is, buff);
if (!is.fail()) {
try {
regex.assign(buff);
}
catch (std::exception const&) {
assert(false);
is.setstate(std::ios_base::failbit);
}
}
return is;
}
开发者ID:streloksps,项目名称:gta-paradise-sa,代码行数:14,代码来源:serialization_regex_t.hpp
示例20: ReadBSTRFromStream
inline void ReadBSTRFromStream( std::basic_istream< CharT, CharTraitsT > &Istream, ATL::CComBSTR &Str )
{
Str.Empty();
CharT Buff[256];
do
{
Istream.read( Buff, APL_ARRSIZE(Buff) );
ATL::CComBSTR TmpStr(Istream.gcount(), Buff);
Str.Append(TmpStr);
} while(Istream.gcount() == APL_ARRSIZE(Buff));
}
开发者ID:dmit25,项目名称:nwlibs,代码行数:14,代码来源:MSXML.hpp
注:本文中的std::basic_istream类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论