本文整理汇总了C++中WString类的典型用法代码示例。如果您正苦于以下问题:C++ WString类的具体用法?C++ WString怎么用?C++ WString使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了WString类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: createEditor
WWidget *WItemDelegate::update(WWidget *widget, const WModelIndex& index,
WFlags<ViewItemRenderFlag> flags)
{
bool editing = widget && widget->find("t") == 0;
if (flags & RenderEditing) {
if (!editing) {
widget = createEditor(index, flags);
WInteractWidget *iw = dynamic_cast<WInteractWidget *>(widget);
if (iw) {
// Disable drag & drop and selection behaviour
iw->mouseWentDown().preventPropagation();
iw->clicked().preventPropagation();
}
}
} else {
if (editing)
widget = 0;
}
WidgetRef widgetRef(widget);
bool isNew = false;
if (!(flags & RenderEditing)) {
if (!widgetRef.w) {
isNew = true;
IndexText *t = new IndexText(index);
t->setObjectName("t");
if (index.isValid() && !(index.flags() & ItemIsXHTMLText))
t->setTextFormat(PlainText);
t->setWordWrap(true);
widgetRef.w = t;
}
if (!index.isValid())
return widgetRef.w;
bool haveCheckBox = false;
boost::any checkedData = index.data(CheckStateRole);
if (!checkedData.empty()) {
haveCheckBox = true;
CheckState state =
(checkedData.type() == typeid(bool) ?
(boost::any_cast<bool>(checkedData) ? Checked : Unchecked)
: (checkedData.type() == typeid(CheckState) ?
boost::any_cast<CheckState>(checkedData) : Unchecked));
IndexCheckBox *icb =
checkBox(widgetRef, index, true, index.flags() & ItemIsTristate);
icb->setCheckState(state);
icb->setEnabled(index.flags() & ItemIsUserCheckable);
} else if (!isNew)
delete checkBox(widgetRef, index, false);
boost::any linkData = index.data(LinkRole);
if (!linkData.empty()) {
WLink link = boost::any_cast<WLink>(linkData);
IndexAnchor *a = anchorWidget(widgetRef, index);
a->setLink(link);
if (link.type() == WLink::Resource)
a->setTarget(TargetNewWindow);
}
IndexText *t = textWidget(widgetRef, index);
WString label = asString(index.data(), textFormat_);
if (label.empty() && haveCheckBox)
label = WString::fromUTF8(" ");
t->setText(label);
std::string iconUrl = asString(index.data(DecorationRole)).toUTF8();
if (!iconUrl.empty()) {
iconWidget(widgetRef, index, true)->setImageLink(WLink(iconUrl));
} else if (!isNew)
delete iconWidget(widgetRef, index, false);
}
if (index.flags() & ItemHasDeferredTooltip){
widgetRef.w->setDeferredToolTip(true, (index.flags() & ItemIsXHTMLText) ?
XHTMLText : PlainText);
} else {
WString tooltip = asString(index.data(ToolTipRole));
if (!tooltip.empty() || !isNew)
widgetRef.w->setToolTip(tooltip,
(index.flags() & ItemIsXHTMLText) ?
XHTMLText : PlainText);
}
WT_USTRING sc = asString(index.data(StyleClassRole));
if (flags & RenderSelected)
sc += WT_USTRING::fromUTF8
(" " + WApplication::instance()->theme()->activeClass());
if (flags & RenderEditing)
sc += WT_USTRING::fromUTF8(" Wt-delegate-edit");
widgetRef.w->setStyleClass(sc);
//.........这里部分代码省略.........
示例2: dbload
void dbload()
{
// If the file doesn't exist, there is no DB to load
if(!FileExists(dbpath))
return;
dprintf("Loading database...");
DWORD ticks = GetTickCount();
// Multi-byte (UTF8) file path converted to UTF16
WString databasePathW = StringUtils::Utf8ToUtf16(dbpath);
// Decompress the file if compression was enabled
bool useCompression = !settingboolget("Engine", "DisableCompression");
LZ4_STATUS lzmaStatus = LZ4_INVALID_ARCHIVE;
{
lzmaStatus = LZ4_decompress_fileW(databasePathW.c_str(), databasePathW.c_str());
// Check return code
if(useCompression && lzmaStatus != LZ4_SUCCESS && lzmaStatus != LZ4_INVALID_ARCHIVE)
{
dputs("\nInvalid database file!");
return;
}
}
// Open the file for reading by the JSON parser
FILE* jsonFile = nullptr;
long jsonFileSize = 0;
if(_wfopen_s(&jsonFile, databasePathW.c_str(), L"rb"))
{
dputs("\nFailed to open database file!");
return;
}
// Get the current file size
fseek(jsonFile, 0, SEEK_END);
jsonFileSize = ftell(jsonFile);
fseek(jsonFile, 0, SEEK_SET);
// Verify that the file size is greater than 0.
// This corrects a bug when a file exists, but there is no data inside.
JSON root = nullptr;
if(jsonFileSize > 0)
root = json_loadf(jsonFile, 0, 0);
// Release the file handle and re-compress
fclose(jsonFile);
if(lzmaStatus != LZ4_INVALID_ARCHIVE && useCompression)
LZ4_compress_fileW(databasePathW.c_str(), databasePathW.c_str());
// Validate JSON load status
if(!root)
{
dputs("\nInvalid database file (JSON)!");
return;
}
// Finally load all structures
CommentCacheLoad(root);
LabelCacheLoad(root);
BookmarkCacheLoad(root);
FunctionCacheLoad(root);
LoopCacheLoad(root);
BpCacheLoad(root);
// Free root
json_decref(root);
dprintf("%ums\n", GetTickCount() - ticks);
}
示例3: EncodeHttpHeaderField
std::string EncodeHttpHeaderField(const std::string &fieldname,
const WString &fieldValue)
{
// This implements RFC 5987
return fieldname + "*=UTF-8''" + urlEncode(fieldValue.toUTF8());
}
示例4: getFullPath
//-----------------------------------------------------------------------
Ogre::DataStreamPtr UnicodeFileSystemArchive::open(const String& _filename, bool _readOnly) const
{
WString wfullpath = getFullPath(_filename);
// Use filesystem to determine size
// (quicker than streaming to the end and back)
struct _stat tagStat;
int ret = _wstat(wfullpath.c_str(), &tagStat);
if(ret != 0)
{
GOTHOGRE_EXCEPT(_filename << " - Problem getting file size"
<< " (archive " << getName() << ").");
}
// Always open in binary mode
// Also, always include reading
std::ios::openmode mode = std::ios::in | std::ios::binary;
std::istream* baseStream = 0;
std::ifstream* roStream = 0;
std::fstream* rwStream = 0;
if (_readOnly)
{
roStream = OGRE_NEW_T(std::ifstream, MEMCATEGORY_GENERAL)();
roStream->open(wfullpath.c_str(), mode);
baseStream = roStream;
}
else
{
if (isReadOnly())
{
GOTHOGRE_EXCEPT(_filename << " - Cannot open a file for writing in"
<< " read-only archive " << getName() << ".");
}
mode |= std::ios::out;
rwStream = OGRE_NEW_T(std::fstream, MEMCATEGORY_GENERAL)();
rwStream->open(wfullpath.c_str(), mode);
baseStream = rwStream;
}
// Should check ensure open succeeded, in case fail for some reason.
if (baseStream->fail())
{
OGRE_DELETE_T(roStream, basic_ifstream, MEMCATEGORY_GENERAL);
OGRE_DELETE_T(rwStream, basic_fstream, MEMCATEGORY_GENERAL);
GOTHOGRE_EXCEPT(_filename << " - Cannot open file in"
<< " archive " << getName() << ".");
}
GOTHOGRE_INFO(_filename << " - " << (_readOnly ? "Loading from" : "Saving to")
<< " archive " << getName() << ".");
/// Construct return stream, tell it to delete on destroy
FileStreamDataStream* stream = 0;
if (rwStream)
{
// use the writeable stream
stream = OGRE_NEW FileStreamDataStream(_filename,
rwStream, tagStat.st_size, true);
}
else
{
// read-only stream
stream = OGRE_NEW FileStreamDataStream(_filename,
roStream, tagStat.st_size, true);
}
return DataStreamPtr(stream);
}
示例5: Write
void Console::Write(const WString& string)
{
DWORD count = 0;
WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), string.Buffer(), (int)string.Length(), &count, 0);
}
示例6: TextUnicode
void Draw::DrawText(int x, int y, const String& text, Font font, Color ink, const int *dx)
{
WString h = TextUnicode(text, text.GetLength(), CHARSET_DEFAULT, font);
DrawText(x, y, h, font, ink, h.GetLength(), dx);
}
示例7: GetSelection
void LineEdit::Paint0(Draw& w) {
int sell, selh;
GetSelection(sell, selh);
if(!IsEnabled())
sell = selh = 0;
Size sz = GetSize();
Size fsz = GetFontSize();
Point sc = sb;
int ll = min(line.GetCount(), sz.cy / fsz.cy + sc.y + 1);
int y = 0;
cpos = GetPos(sc.y);
cline = sc.y;
sell -= cpos;
selh -= cpos;
int pos = cpos;
Vector<int> dx, dx2;
int fascent = font.Info().GetAscent();
for(int i = sc.y; i < ll; i++) {
WString tx = line[i];
int len = tx.GetLength();
if(w.IsPainting(0, y, sz.cx, fsz.cy)) {
Highlight ih;
ih.ink = color[IsShowEnabled() ? INK_NORMAL : INK_DISABLED];
ih.paper = color[IsReadOnly() || !IsShowEnabled() ? PAPER_READONLY : PAPER_NORMAL];
if(nobg)
ih.paper = Null;
ih.font = font;
ih.chr = 0;
Vector<Highlight> hl;
hl.SetCount(len + 1, ih);
for(int q = 0; q < tx.GetCount(); q++)
hl[q].chr = tx[q];
HighlightLine(i, hl, pos);
int ln = hl.GetCount() - 1;
int l = max(sell, 0);
int h = selh > len ? len : selh;
if(l < h)
for(int i = l; i < h; i++) {
hl[i].paper = color[PAPER_SELECTED];
hl[i].ink = color[INK_SELECTED];
}
if(sell <= len && selh > len)
for(int i = len; i < hl.GetCount(); i++) {
hl[i].paper = color[PAPER_SELECTED];
hl[i].ink = color[INK_SELECTED];
}
Buffer<wchar> txt(ln);
for(int i = 0; i < ln; i++)
txt[i] = hl[i].chr;
for(int pass = 0; pass < 2; pass++) {
int gp = 0;
int scx = fsz.cx * sc.x;
if(ln >= 0) {
int q = 0;
while(q < ln) {
Highlight& h = hl[q];
if(txt[q] == '\t') {
int ngp = (gp + tabsize) / tabsize * tabsize;
int l = ngp - gp;
LLOG("Highlight -> tab[" << q << "] paper = " << h.paper);
if(pass == 0) {
w.DrawRect(gp * fsz.cx - scx, y, fsz.cx * l, fsz.cy, h.paper);
if(showtabs && h.paper != SColorHighlight && q < tx.GetLength()) {
Color c = Blend(SColorLight, SColorHighlight);
w.DrawRect(gp * fsz.cx - scx + 2, y + fsz.cy / 2,
l * fsz.cx - 4, 1, c);
w.DrawRect(ngp * fsz.cx - scx - 3, y + 3,
1, fsz.cy - 6, c);
}
if(bordercolumn > 0 && bordercolumn >= gp && bordercolumn < gp + l)
w.DrawRect((bordercolumn - sc.x) * fsz.cx, y, 1, fsz.cy, bordercolor);
}
q++;
gp = ngp;
}
else
if(txt[q] == ' ') {
LLOG("Highlight -> space[" << q << "] paper = " << h.paper);
if(pass == 0) {
w.DrawRect(gp * fsz.cx - scx, y, fsz.cx, fsz.cy, h.paper);
if(showspaces && h.paper != SColorHighlight && q < tx.GetLength()) {
Color c = Blend(SColorLight, SColorHighlight);
w.DrawRect(gp * fsz.cx - scx + fsz.cx / 2, y + fsz.cy / 2,
2, 2, c);
}
if(bordercolumn > 0 && bordercolumn >= gp && bordercolumn < gp + 1)
w.DrawRect((bordercolumn - sc.x) * fsz.cx, y, 1, fsz.cy, bordercolor);
}
q++;
gp++;
}
else {
bool cjk = IsCJKIdeograph(txt[q]);
int p = q + 1;
while(p < len && h == hl[p] && txt[p] != '\t' && txt[p] != ' ' && IsCJKIdeograph(txt[p]) == cjk && p - q < 128)
p++;
int l = p - q;
int ll = cjk ? 2 * l : l;
LLOG("Highlight -> paper[" << q << "] = " << h.paper);
int x = gp * fsz.cx - scx;
//.........这里部分代码省略.........
示例8: layoutText
void FontSupport::drawText(const WFont& font, const WRectF& rect,
WFlags<AlignmentFlag> flags, const WString& text)
{
PANGO_LOCK;
enabledFontFormats = enabledFontFormats_;
std::string utf8 = text.toUTF8();
std::vector<PangoGlyphString *> glyphs;
int width;
GList *items = layoutText(font, utf8, glyphs, width);
AlignmentFlag hAlign = flags & AlignHorizontalMask;
AlignmentFlag vAlign = flags & AlignVerticalMask;
/* FIXME handle bidi ! */
double x;
switch (hAlign) {
case AlignmentFlag::Left:
x = rect.left();
break;
case AlignmentFlag::Right:
x = rect.right() - pangoUnitsToDouble(width);
break;
case AlignmentFlag::Center:
x = rect.center().x() - pangoUnitsToDouble(width/2);
break;
default:
x = 0;
}
unsigned i = 0;
for (GList *elem = items; elem; elem = elem->next) {
PangoItem *item = (PangoItem *)elem->data;
PangoAnalysis *analysis = &item->analysis;
PangoGlyphString *gl = glyphs[i++];
currentFont_ = analysis->font;
/*
* Note, we are actually ignoring the selected glyphs here, which
* is a pitty and possibly wrong if the device does not make the
* same selection !
*/
WString s = WString::fromUTF8(utf8.substr(item->offset,
item->length));
device_->drawText(WRectF(x, rect.y(),
1000, rect.height()),
AlignmentFlag::Left | vAlign, TextFlag::SingleLine,
s, nullptr);
WTextItem textItem = device_->measureText(s, -1, false);
x += textItem.width();
pango_item_free(item);
pango_glyph_string_free(gl);
}
g_list_free(items);
currentFont_ = nullptr;
}
示例9: g_utf8_strlen
WTextItem FontSupport::measureText(const WFont& font, const WString& text,
double maxWidth, bool wordWrap)
{
PANGO_LOCK;
enabledFontFormats = enabledFontFormats_;
/*
* Note: accurate measuring on a bitmap requires that the transformation
* is applied, because hinting may push chars to boundaries e.g. when
* rotated (or scaled too?)
*/
std::string utf8 = text.toUTF8();
const char *s = utf8.c_str();
if (wordWrap) {
int utflen = g_utf8_strlen(s, -1);
PangoLogAttr *attrs = new PangoLogAttr[utflen + 1];
PangoLanguage *language = pango_language_from_string("en-US");
pango_get_log_attrs(s, utf8.length(), -1, language, attrs, utflen + 1);
double w = 0, nextW = -1;
int current = 0;
int measured = 0;
int end = 0;
bool maxWidthReached = false;
for (int i = 0; i < utflen + 1; ++i) {
if (i == utflen || attrs[i].is_line_break) {
int cend = g_utf8_offset_to_pointer(s, end) - s;
WTextItem ti
= measureText(font, WString::fromUTF8(utf8.substr(measured,
cend - measured)),
-1, false);
if (isEpsilonMore(w + ti.width(), maxWidth)) {
nextW = ti.width();
maxWidthReached = true;
break;
} else {
measured = cend;
current = g_utf8_offset_to_pointer(s, i) - s;
w += ti.width();
if (i == utflen) {
w += measureText(font, WString::fromUTF8(utf8.substr(measured)),
-1, false).width();
measured = utf8.length();
}
}
}
if (!attrs[i].is_white)
end = i + 1;
}
delete[] attrs;
if (maxWidthReached) {
return WTextItem(WString::fromUTF8(utf8.substr(0, current)), w, nextW);
} else {
/*
* For some reason, the sum of the individual widths is a bit less
* (for longer stretches of text), so we re-measure it !
*/
w = measureText(font, WString::fromUTF8(utf8.substr(0, measured)),
-1, false).width();
return WTextItem(text, w);
}
} else {
std::vector<PangoGlyphString *> glyphs;
int width;
GList *items = layoutText(font, utf8, glyphs, width);
double w = pangoUnitsToDouble(width);
for (unsigned i = 0; i < glyphs.size(); ++i)
pango_glyph_string_free(glyphs[i]);
g_list_foreach(items, (GFunc) pango_item_free, nullptr);
g_list_free(items);
return WTextItem(text, w);
}
}
示例10: drawText
void WPdfImage::drawText(const WRectF& rect,
WFlags<AlignmentFlag> flags,
TextFlag textFlag,
const WString& text,
const WPointF *clipPoint)
{
// FIXME: textFlag
if (clipPoint && painter() && !painter()->clipPath().isEmpty()) {
if (!painter()->clipPathTransform().map(painter()->clipPath())
.isPointInPath(painter()->worldTransform().map(*clipPoint)))
return;
}
if (trueTypeFont_ && !trueTypeFonts_->busy())
trueTypeFonts_->drawText(painter()->font(), rect, flags, text);
else {
HPDF_REAL left, top, right, bottom;
HPDF_TextAlignment alignment = HPDF_TALIGN_LEFT;
AlignmentFlag horizontalAlign = flags & AlignHorizontalMask;
AlignmentFlag verticalAlign = flags & AlignVerticalMask;
switch (horizontalAlign) {
default:
// should never happen
case AlignmentFlag::Left:
left = rect.left();
right = left + 10000;
alignment = HPDF_TALIGN_LEFT;
break;
case AlignmentFlag::Right:
right = rect.right();
left = right - 10000;
alignment = HPDF_TALIGN_RIGHT;
break;
case AlignmentFlag::Center:
{
float center = rect.center().x();
left = center - 5000;
right = center + 5000;
alignment = HPDF_TALIGN_CENTER;
break;
}
}
switch (verticalAlign) {
default:
// fall-through ; should never happen
case AlignmentFlag::Top:
top = rect.top(); break;
case AlignmentFlag::Middle:
// FIXME: use font metrics to center middle of ascent !
top = rect.center().y() - 0.60 * fontSize_; break;
case AlignmentFlag::Bottom:
top = rect.bottom() - fontSize_; break;
}
bottom = top + fontSize_;
if (trueTypeFonts_->busy())
setChanged(PainterChangeFlag::Font);
HPDF_Page_GSave(page_);
// Undo the global inversion
HPDF_Page_Concat(page_, 1, 0, 0, -1, 0, bottom);
HPDF_Page_BeginText(page_);
// Need to fill text using pen color
const WColor& penColor = painter()->pen().color();
HPDF_Page_SetRGBFill(page_,
penColor.red() / 255.,
penColor.green() / 255.,
penColor.blue() / 255.);
std::string s = trueTypeFont_ ? text.toUTF8() : text.narrow();
HPDF_Page_TextRect(page_, left, fontSize_, right, 0, s.c_str(),
alignment, nullptr);
HPDF_Page_EndText(page_);
HPDF_Page_GRestore(page_);
}
}
示例11: UTF8ToWide
FILE *OpenRead(const char *inUtf8Name)
{
WString wide = UTF8ToWide(inUtf8Name);
return OpenRead( wide.c_str() );
}
示例12: emitJobClickedOrSelected
///
/// Handle emitting result clicked or selected (they do the same thing except
/// for the signal so combined into one function)
///
void ResultsTable::emitJobClickedOrSelected(const WModelIndex& item, bool clicked)
{
int modelRow = item.row();
boost::any d = mSortFilterProxyModel->data(modelRow, 0, UserRole);
boost::any d1 = mSortFilterProxyModel->data(modelRow, 0, UserRole + 1);
boost::any d2 = mSortFilterProxyModel->data(modelRow, 0, UserRole + 2);
boost::any d3 = mSortFilterProxyModel->data(modelRow, 0, UserRole + 3);
boost::any d4 = mSortFilterProxyModel->data(modelRow, 1, DisplayRole);
boost::any d5 = mSortFilterProxyModel->data(modelRow, 0, UserRole + 4);
if (!d.empty() && !d1.empty() && !d2.empty())
{
WString clusterCommand = boost::any_cast<WString>(d);
WString metaScript = boost::any_cast<WString>(d1);
WString arguments = boost::any_cast<WString>(d2);
WString jobID;
if (!d3.empty())
{
jobID = boost::any_cast<WString>(d3);
}
WString user;
if (!d4.empty())
{
user = boost::any_cast<WString>(d4);
}
WString project;
if (!d5.empty())
{
project = boost::any_cast<WString>(d5);
}
if (clicked)
{
mResultClicked.emit(clusterCommand.toUTF8(), metaScript.toUTF8(), arguments.toUTF8(),
jobID.toUTF8(), user.toUTF8(), project.toUTF8());
}
else
{
mResultSelected.emit(clusterCommand.toUTF8(), metaScript.toUTF8(), arguments.toUTF8(),
jobID.toUTF8(), user.toUTF8(), project.toUTF8());
}
}
}
示例13: debugInfo
void TreeNode::debugInfo( TreeRoot * root )
//-----------------------------------------
{
WString boundLine;
WString descendLine;
char * enabled;
char * placed;
WString statLine;
WString refLine;
WString rootLine;
TreeCoord ox, oy;
TreeRect rootRect;
ox = _parent->getXOff();
oy = _parent->getYOff();
root->getBound( rootRect );
rootLine.printf( "_rootNode = %s, bounding(%ld,%ld,%ld,%ld) ",
root->node()->name(), rootRect.x(), rootRect.y(),
rootRect.w(), rootRect.h() );
boundLine.printf( "_bounding [%s] = (%ld,%ld,%ld,%ld), offset = (%ld,%ld) ",
(_flags.boundSet) ? "set" : "unset",
_bounding.x(), _bounding.y(),
_bounding.w(), _bounding.h(),
ox, oy );
descendLine.printf( "_sibWidth = %ld, _descend = (%ld,%ld,%ld,%ld) ",
_sibWidth, _descend.x(), _descend.y(),
_descend.w(), _descend.h() );
switch( _flags.enabled ) {
case Hidden:
enabled = "Hidden";
break;
default:
enabled = "Visible";
break;
}
switch( _flags.placed ) {
case NotPlaced:
placed = "NotPlaced";
break;
case PartiallyPlaced:
placed = "PartiallyPlaced";
break;
case Arranging:
placed = "Arranging";
break;
default:
placed = "Placed";
}
statLine.printf( " enabled = %s, placed = %s, selected = %s, _level = %d\n",
enabled, placed, (_flags.selected) ? "true" : "false",
getLevel() );
refLine.printf( "hasReference() = %s, isReference() = %s",
hasReference() ? "true" : "false",
isReference() ? "true" : "false" );
WMessageDialog::messagef( _parent, MsgPlain, MsgOk, name(), "%s%s%s%s%s",
(const char *)rootLine, (const char *)boundLine,
(const char *)descendLine, (const char *)statLine,
(const char *)refLine );
}
示例14: wupper
WString wupper(const WString& string)
{
WString result = string.Buffer();
_wcsupr_s((wchar_t*)result.Buffer(), result.Length() + 1);
return result;
}
示例15: Rename
bool Folder::Rename(const WString& newName)const
{
WString oldFileName = filePath_.GetFullPath();
WString newFileName = (filePath_.GetFolder() / newName).GetFullPath();
return MoveFile(oldFileName.Buffer(), newFileName.Buffer()) != 0;
}