本文整理汇总了C++中BString::Insert方法的典型用法代码示例。如果您正苦于以下问题:C++ BString::Insert方法的具体用法?C++ BString::Insert怎么用?C++ BString::Insert使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BString
的用法示例。
在下文中一共展示了BString::Insert方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: isxdigit
status_t
UrlWrapper::_DecodeUrlString(BString& string)
{
// TODO: check for %00 and bail out!
int32 length = string.Length();
int i;
for (i = 0; string[i] && i < length - 2; i++) {
if (string[i] == '%' && isxdigit(string[i+1])
&& isxdigit(string[i+2])) {
int c;
sscanf(string.String() + i + 1, "%02x", &c);
string.Remove(i, 3);
string.Insert((char)c, 1, i);
length -= 2;
}
}
return B_OK;
}
示例2:
bool
KeyboardLayout::_SubstituteVariables(BString& term, VariableMap& variables,
BString& unknown)
{
while (true) {
int32 index = term.FindFirst('$');
if (index < 0)
break;
// find variable name
VariableMap::iterator iterator = variables.begin();
VariableMap::iterator best = variables.end();
int32 bestLength = 0;
for (; iterator != variables.end(); iterator++) {
const BString& name = iterator->first;
if (!name.Compare(&term[index], name.Length())
&& name.Length() > bestLength) {
best = iterator;
bestLength = name.Length();
}
}
if (best != variables.end()) {
// got one, replace it
term.Remove(index, bestLength);
term.Insert(best->second.String(), index);
} else {
// variable has not been found
unknown = &term[index];
int32 length = 1;
while (isalpha(unknown[length])) {
length++;
}
unknown.Truncate(length);
return false;
}
}
return true;
}
示例3:
/* isCue
* checks if selected file is a cue file (checks by file extension)
* if yes, returns true
*/
bool
ProjectTypeSelector::isCue()
{
BString *SelectedFile = (BString*)FileList->FirstItem();
BString SelectedFileTMP;
BString FileExtension;
BString tmp;
//get file extension
SelectedFile->CopyInto(SelectedFileTMP, 0, (int)SelectedFile->Length());
SelectedFileTMP.RemoveAll("/");
for(int i = 3; i > 0; i--) {
tmp.SetTo(SelectedFileTMP.ByteAt((SelectedFileTMP.Length() - i)), 1);
FileExtension.Insert(tmp.String(), FileExtension.Length());
}
FileExtension.ToUpper();
if(FileExtension.Compare("CUE") == 0)
return true;
return false;
}
示例4: FoldLineAtWhiteSpaceAndAddCRLF
void FoldLineAtWhiteSpaceAndAddCRLF (BString &string)
{
int inputLength = string.Length();
int lineStartIndex;
const int maxLineLength = 78; // Doesn't include CRLF.
BString output;
int splitIndex;
int tempIndex;
lineStartIndex = 0;
while (true) {
// If we don't need to wrap the text, just output the remainder, if any.
if (lineStartIndex + maxLineLength >= inputLength) {
if (lineStartIndex < inputLength) {
output.Insert (string, lineStartIndex /* source offset */,
inputLength - lineStartIndex /* count */,
output.Length() /* insert at */);
output.Append (CRLF);
}
break;
}
// Look ahead for a convenient spot to split it, between a comma and
// space, which you often see between e-mail addresses like this:
// "Joe Who" [email protected], "Someone Else" [email protected]
tempIndex = lineStartIndex + maxLineLength;
if (tempIndex > inputLength)
tempIndex = inputLength;
splitIndex = string.FindLast (", ", tempIndex);
if (splitIndex >= lineStartIndex)
splitIndex++; // Point to the space character.
// If none of those exist, try splitting at any white space.
if (splitIndex <= lineStartIndex)
splitIndex = string.FindLast (" ", tempIndex);
if (splitIndex <= lineStartIndex)
splitIndex = string.FindLast ("\t", tempIndex);
// If none of those exist, allow for a longer word - split at the next
// available white space.
if (splitIndex <= lineStartIndex)
splitIndex = string.FindFirst (" ", lineStartIndex + 1);
if (splitIndex <= lineStartIndex)
splitIndex = string.FindFirst ("\t", lineStartIndex + 1);
// Give up, the whole rest of the line can't be split, just dump it
// out.
if (splitIndex <= lineStartIndex) {
if (lineStartIndex < inputLength) {
output.Insert (string, lineStartIndex /* source offset */,
inputLength - lineStartIndex /* count */,
output.Length() /* insert at */);
output.Append (CRLF);
}
break;
}
// Do the split. The current line up to but not including the space
// gets output, followed by a CRLF. The space remains to become the
// start of the next line (and that tells the message reader that it is
// a continuation line).
output.Insert (string, lineStartIndex /* source offset */,
splitIndex - lineStartIndex /* count */,
output.Length() /* insert at */);
output.Append (CRLF);
lineStartIndex = splitIndex;
}
string.SetTo (output);
}
示例5: if
_EXPORT void SubjectToThread (BString &string)
{
// a regex that matches a non-ASCII UTF8 character:
#define U8C \
"[\302-\337][\200-\277]" \
"|\340[\302-\337][\200-\277]" \
"|[\341-\357][\200-\277][\200-\277]" \
"|\360[\220-\277][\200-\277][\200-\277]" \
"|[\361-\367][\200-\277][\200-\277][\200-\277]" \
"|\370[\210-\277][\200-\277][\200-\277][\200-\277]" \
"|[\371-\373][\200-\277][\200-\277][\200-\277][\200-\277]" \
"|\374[\204-\277][\200-\277][\200-\277][\200-\277][\200-\277]" \
"|\375[\200-\277][\200-\277][\200-\277][\200-\277][\200-\277]"
#define PATTERN \
"^ +" \
"|^(\\[[^]]*\\])(\\<| +| *(\\<(\\w|" U8C "){2,3} *(\\[[^\\]]*\\])? *:)+ *)" \
"|^( +| *(\\<(\\w|" U8C "){2,3} *(\\[[^\\]]*\\])? *:)+ *)" \
"| *\\(fwd\\) *$"
if (gRebuf == NULL && atomic_add(&gLocker,1) == 0)
{
// the idea is to compile the regexp once to speed up testing
for (int i=0; i<256; ++i) gTranslation[i]=i;
for (int i='a'; i<='z'; ++i) gTranslation[i]=toupper(i);
gRe.translate = gTranslation;
gRe.regs_allocated = REGS_FIXED;
re_syntax_options = RE_SYNTAX_POSIX_EXTENDED;
const char *pattern = PATTERN;
// count subexpressions in PATTERN
for (unsigned int i=0; pattern[i] != 0; ++i)
{
if (pattern[i] == '\\')
++i;
else if (pattern[i] == '(')
++gNsub;
}
const char *err = re_compile_pattern(pattern,strlen(pattern),&gRe);
if (err == NULL)
gRebuf = &gRe;
else
fprintf(stderr, "Failed to compile the regex: %s\n", err);
}
else
{
int32 tries = 200;
while (gRebuf == NULL && tries-- > 0)
snooze(10000);
}
if (gRebuf)
{
struct re_registers regs;
// can't be static if this function is to be thread-safe
regs.num_regs = gNsub;
regs.start = (regoff_t*)malloc(gNsub*sizeof(regoff_t));
regs.end = (regoff_t*)malloc(gNsub*sizeof(regoff_t));
for (int start=0;
(start=re_search(gRebuf, string.String(), string.Length(),
0, string.Length(), ®s)) >= 0;
)
{
//
// we found something
//
// don't delete [bemaildaemon]...
if (start == regs.start[1])
start = regs.start[2];
string.Remove(start,regs.end[0]-start);
if (start) string.Insert(' ',1,start);
}
free(regs.start);
free(regs.end);
}
// Finally remove leading and trailing space. Some software, like
// tm-edit 1.8, appends a space to the subject, which would break
// threading if we left it in.
trim_white_space(string);
}
示例6: Frame
void
ExpressionTextView::SetValue(BString value)
{
// save the value
fCurrentValue = value;
// calculate the width of the string
BFont font;
uint32 mode = B_FONT_ALL;
GetFontAndColor(&font, &mode);
float stringWidth = font.StringWidth(value);
// make the string shorter if it does not fit in the view
float viewWidth = Frame().Width();
if (value.CountChars() > 3 && stringWidth > viewWidth) {
// get the position of the first digit
int32 firstDigit = 0;
if (value[0] == '-')
firstDigit++;
// calculate the value of the exponent
int32 exponent = 0;
int32 offset = value.FindFirst('.');
if (offset == B_ERROR) {
exponent = value.CountChars() - 1 - firstDigit;
value.Insert('.', 1, firstDigit + 1);
} else {
if (offset == firstDigit + 1) {
// if the value is 0.01 or larger then scientific notation
// won't shorten the string
if (value[firstDigit] != '0' || value[firstDigit + 2] != '0'
|| value[firstDigit + 3] != '0') {
exponent = 0;
} else {
// remove the period
value.Remove(offset, 1);
// check for negative exponent value
exponent = 0;
while (value[firstDigit] == '0') {
value.Remove(firstDigit, 1);
exponent--;
}
// add the period
value.Insert('.', 1, firstDigit + 1);
}
} else {
// if the period + 1 digit fits in the view scientific notation
// won't shorten the string
BString temp = value;
temp.Truncate(offset + 2);
stringWidth = font.StringWidth(temp);
if (stringWidth < viewWidth)
exponent = 0;
else {
// move the period
value.Remove(offset, 1);
value.Insert('.', 1, firstDigit + 1);
exponent = offset - (firstDigit + 1);
}
}
}
// add the exponent
offset = value.CountChars() - 1;
if (exponent != 0)
value << "E" << exponent;
// reduce the number of digits until the string fits or can not be
// made any shorter
stringWidth = font.StringWidth(value);
char lastRemovedDigit = '0';
while (offset > firstDigit && stringWidth > viewWidth) {
if (value[offset] != '.')
lastRemovedDigit = value[offset];
value.Remove(offset--, 1);
stringWidth = font.StringWidth(value);
}
// no need to keep the period if no digits follow
if (value[offset] == '.') {
value.Remove(offset, 1);
offset--;
}
// take care of proper rounding of the result
int digit = (int)lastRemovedDigit - '0'; // ascii to int
if (digit >= 5) {
for (; offset >= firstDigit; offset--) {
if (value[offset] == '.')
continue;
digit = (int)(value[offset]) - '0' + 1; // ascii to int + 1
if (digit != 10)
break;
value[offset] = '0';
}
//.........这里部分代码省略.........