本文整理汇总了C++中BString::size方法的典型用法代码示例。如果您正苦于以下问题:C++ BString::size方法的具体用法?C++ BString::size怎么用?C++ BString::size使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BString
的用法示例。
在下文中一共展示了BString::size方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
/** Copies the supplied unicode string to the field.
**
** Again, like the string types, the binary Set() function copies the data
** so you may dispose of the source data after a call to this method.
**/
size_t ID3_FieldImpl::SetBinary(BString data) //< data to assign to this field.
{
size_t size = 0;
if (this->GetType() == ID3FTY_BINARY)
{
this->Clear();
size_t fixed = _fixed_size;
size = data.size();
if (fixed == 0)
{
_binary = data;
}
else
{
_binary.assign(data, 0, dami::min(size, fixed));
if (size < fixed)
{
_binary.append(fixed - size, '\0');
}
}
size = _binary.size();
_changed = true;
}
return size;
}
示例2: add
void Buffer::add(const BString &value)
{
TSize size = value.size();
_fit(sizeof(size) + size);
memcpy(_writePos, &size, sizeof(size));
_writePos += sizeof(size);
memcpy(_writePos, value.c_str(), size);
_writePos += size;
}
示例3: Bool
BOOTIL_EXPORT bool Bool( const BString & str )
{
if ( str.size() == 0 ) { return false; }
if ( str[0] == 'T' || str[0] == 't' || str[0] == 'y' || str[0] == 'Y' ) { return true; }
if ( str[0] == 'F' || str[0] == 'f' || str[0] == 'n' || str[0] == 'N' ) { return false; }
if ( str[0] == '0' ) { return false; }
return true;
}
示例4:
/** Turns a binary tag into a series of ID3_Frame objects attached to the
** tag.
**
** \code
** ID3_Tag myTag;
** uchar header[ID3_TAGHEADERSIZE];
** uchar *buffer;
** luint tagSize;
**
** // get ID3_TAGHEADERSIZE from a socket or somewhere
** // ...
**
** if ((tagSize = ID3_IsTagHeader(ourSourceBuffer)) > -1)
** {
** // read a further 'tagSize' bytes in
** // from our data source
** // ...
**
** if (buffer = new uchar[tagSize])
** {
** // now we will call ID3_Tag::Parse()
** // with these values (explained later)
** myTag.Parse(header, buffer);
**
** // do something with the objects,
** // like look for titles, artists, etc.
** // ...
**
** // free the buffer
** delete [] buffer;
** }
** }
** \endcode
**
** \sa ID3_Frame
** @param header The byte header read in from the data source.
** @param buffer The remainder of the tag (not including the data source)
** read in from the data source.
**/
size_t ID3_Tag::Parse(const uchar header[ID3_TAGHEADERSIZE], const uchar *buffer)
{
size_t size = ID3_Tag::IsV2Tag(header);
if (0 == size)
{
return 0;
}
BString buf;
buf.reserve(ID3_TagHeader::SIZE + size);
buf.append(reinterpret_cast<const BString::value_type *>(header),
ID3_TagHeader::SIZE);
buf.append(reinterpret_cast<const BString::value_type *>(buffer), size);
return this->Parse(buf.data(), buf.size());
}
示例5: _writeItem
bool Slice::_writeItem(File &putTmpFile, BString &buf, IndexEntry &ie)
{
if (_dataFd.seek(_size, SEEK_SET) != (off_t)_size) {
log::Fatal::L("Can't seek slice dataFile %u\n", _sliceID);
return false;
}
const ItemHeader &itemHeader = ie.header;
if (_dataFd.write(&itemHeader, sizeof(itemHeader)) != sizeof(itemHeader)) {
log::Fatal::L("Can't write header to slice dataFile %u\n", _sliceID);
return false;
}
auto leftSize = ie.header.size;
while (leftSize > 0) {
TItemSize chunkSize = MAX_BUF_SIZE;
if (chunkSize > leftSize)
chunkSize = leftSize;
buf.clear();
if (putTmpFile.read(buf.reserveBuffer(chunkSize), chunkSize) != (ssize_t)chunkSize) {
log::Fatal::L("Can't read data from put tmp file %u\n", _sliceID);
return false;
}
if (_dataFd.write(buf.c_str(), buf.size()) != (ssize_t)buf.size()) {
log::Fatal::L("Can't write data to slice dataFile %u\n", _sliceID);
return false;
}
leftSize -= chunkSize;
}
ie.pointer.sliceID = _sliceID;
ie.pointer.seek = _size;
if (_indexFd.write(&ie, sizeof(ie)) != sizeof(ie)) {
log::Fatal::L("Can't write index entry to slice indexFile %u\n", _sliceID);
return false;
}
_size = _dataFd.seek(0, SEEK_CUR);
return true;
}
示例6: parse
bool mm::parse(ID3_TagImpl& tag, ID3_Reader& rdr)
{
io::ExitTrigger et(rdr);
ID3_Reader::pos_type end = rdr.getCur();
if (end < rdr.getBeg() + 48)
{
ID3D_NOTICE( "mm::parse: bailing, not enough bytes to parse, pos = " << end );
return false;
}
rdr.setCur(end - 48);
String version;
{
if (io::readText(rdr, 32) != "Brava Software Inc. ")
{
ID3D_NOTICE( "mm::parse: bailing, couldn't find footer" );
return false;
}
version = io::readText(rdr, 4);
if (version.size() != 4 ||
!isdigit(version[0]) || version[1] != '.' ||
!isdigit(version[2]) ||
!isdigit(version[3]))
{
ID3D_WARNING( "mm::parse: bailing, nonstandard version = " << version );
return false;
}
}
ID3_Reader::pos_type beg = rdr.setCur(end - 48);
et.setExitPos(beg);
if (end < 68)
{
ID3D_NOTICE( "mm::parse: bailing, not enough bytes to parse offsets, pos = " << end );
return false;
}
rdr.setCur(end - 68);
io::WindowedReader dataWindow(rdr);
dataWindow.setEnd(rdr.getCur());
uint32 offsets[5];
io::WindowedReader offsetWindow(rdr, 20);
for (size_t i = 0; i < 5; ++i)
{
offsets[i] = io::readLENumber(rdr, sizeof(uint32));
}
size_t metadataSize = 0;
if (version <= "3.00")
{
// All MusicMatch tags up to and including version 3.0 had metadata
// sections exactly 7868 bytes in length.
metadataSize = 7868;
}
else
{
// MusicMatch tags after version 3.0 had three possible lengths for their
// metadata sections. We can determine which it was by searching for
// the version section signature that should precede the metadata section
// by exactly 256 bytes.
size_t possibleSizes[] = { 8132, 8004, 7936 };
for (size_t i = 0; i < sizeof(possibleSizes)/sizeof(size_t); ++i)
{
dataWindow.setCur(dataWindow.getEnd());
// Our offset will be exactly 256 bytes prior to our potential metadata
// section
size_t offset = possibleSizes[i] + 256;
if (dataWindow.getCur() < offset)
{
// if our filesize is less than the offset, then it can't possibly
// be the correct offset, so try again.
continue;
}
dataWindow.setCur(dataWindow.getCur() - offset);
// now read in the signature to see if it's a match
if (io::readText(dataWindow, 8) == "18273645")
{
metadataSize = possibleSizes[i];
break;
}
}
}
if (0 == metadataSize)
{
// if we didn't establish a size for the metadata, then something is
// wrong. probably should log this.
ID3D_WARNING( "mm::parse: bailing, couldn't find meta data signature, end = " << end );
return false;
}
// parse the offset pointers to determine the actual sizes of all the
// sections
size_t sectionSizes[5];
//.........这里部分代码省略.........
示例7: isr
int
main(size_t argc, const char** argv)
{
ID3D_INIT_DOUT();
ID3D_INIT_WARNING();
ID3D_INIT_NOTICE();
ID3_IStreamReader isr(cin);
BString orig = io::readAllBinary(isr);
cout << "input size: " << orig.size() << endl;
cout << endl;
cout << "=== Testing Synchronization ===" << endl;
BString synced;
{
io::BStringReader sr(orig);
io::UnsyncedReader ur(sr);
synced = io::readAllBinary(ur);
}
cout << "synced size: " << synced.size() << endl;
BString unsynced;
{
io::BStringWriter sw(unsynced);
io::UnsyncedWriter uw(sw);
uw.writeChars(synced.data(), synced.size());
}
cout << "unsynced size: " << unsynced.size() << endl;
BString resynced;
{
io::BStringReader sr(unsynced);
io::UnsyncedReader ur(sr);
resynced = io::readAllBinary(ur);
}
cout << "resynced size: " << resynced.size() << endl;
if (unsynced == orig)
{
cout << "orig == unsynced" << endl;
}
else
{
cout << "orig != unsynced" << endl;
}
if (synced == resynced)
{
cout << "synced == resynced" << endl;
}
else
{
cout << "synced != resynced" << endl;
}
cout << endl;
cout << "=== Testing Trailing Spaces ===" << endl;
String text;
{
io::StringWriter sw(text);
io::writeTrailingSpaces (sw, "hello, world", 50);
}
cout << "new text = \"" << text << "\"" << endl;
String origText;
{
io::StringReader sr(text);
origText = io::readTrailingSpaces(sr, 100);
}
cout << "orig text = \"" << origText << "\"" << endl;
cout << endl;
cout << "=== Testing Binary Numbers ===" << endl;
String number;
{
io::StringWriter sw(number);
io::writeBENumber(sw, 1234567890, 4);
}
cout << "binary number:";
for (size_t i = 0; i < number.size(); ++i)
{
cout << " 0x" << hex << (size_t) (0xFF & number[i]) << dec;
//.........这里部分代码省略.........
示例8: str
///////////////////////////////////////////////////////////////////////////////
#include <boost/test/unit_test.hpp>
#include <boost/test/output_test_stream.hpp>
#include "bstring.hpp"
using namespace fl::strings;
BOOST_AUTO_TEST_SUITE( BStringTests )
BOOST_AUTO_TEST_CASE( Create )
{
BOOST_CHECK_NO_THROW (
BString str;
BOOST_CHECK(str.size() == 0);
BOOST_CHECK(str.reserved() == 0);
);
BOOST_CHECK_NO_THROW (
BString str(10);
BOOST_CHECK(str.size() == 0);
BOOST_CHECK(str.reserved() == 10);
);
}
BOOST_AUTO_TEST_CASE( MoveCreate )
{
BOOST_CHECK_NO_THROW (
BString str(10);
BOOST_CHECK(str.sprintfSet("test") == 4);
示例9: addRealEscape
void Mysql::addRealEscape(BString &buf, const BString &value)
{
addRealEscape(buf, value.c_str(), value.size());
}