本文整理汇总了C++中CStr类的典型用法代码示例。如果您正苦于以下问题:C++ CStr类的具体用法?C++ CStr怎么用?C++ CStr使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了CStr类的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ENSURE
void CGUI::Xeromyces_ReadObject(XMBElement Element, CXeromyces* pFile, IGUIObject* pParent, std::vector<std::pair<CStr, CStr> >& NameSubst, boost::unordered_set<VfsPath>& Paths, u32 nesting_depth)
{
ENSURE(pParent);
XMBAttributeList attributes = Element.GetAttributes();
CStr type(attributes.GetNamedItem(pFile->GetAttributeID("type")));
if (type.empty())
type = "empty";
// Construct object from specified type
// henceforth, we need to do a rollback before aborting.
// i.e. releasing this object
IGUIObject* object = ConstructObject(type);
if (!object)
{
LOGERROR("GUI: Unrecognized object type \"%s\"", type.c_str());
return;
}
// Cache some IDs for element attribute names, to avoid string comparisons
#define ELMT(x) int elmt_##x = pFile->GetElementID(#x)
#define ATTR(x) int attr_##x = pFile->GetAttributeID(#x)
ELMT(object);
ELMT(action);
ELMT(repeat);
ELMT(translatableAttribute);
ELMT(translate);
ELMT(attribute);
ELMT(keep);
ELMT(include);
ATTR(style);
ATTR(type);
ATTR(name);
ATTR(hotkey);
ATTR(z);
ATTR(on);
ATTR(file);
ATTR(directory);
ATTR(id);
ATTR(context);
//
// Read Style and set defaults
//
// If the setting "style" is set, try loading that setting.
//
// Always load default (if it's available) first!
//
CStr argStyle(attributes.GetNamedItem(attr_style));
if (m_Styles.count("default") == 1)
object->LoadStyle(*this, "default");
if (!argStyle.empty())
{
if (m_Styles.count(argStyle) == 0)
LOGERROR("GUI: Trying to use style '%s' that doesn't exist.", argStyle.c_str());
else
object->LoadStyle(*this, argStyle);
}
bool NameSet = false;
bool ManuallySetZ = false;
CStrW inclusionPath;
CStr hotkeyTag;
for (XMBAttribute attr : attributes)
{
// If value is "null", then it is equivalent as never being entered
if (CStr(attr.Value) == "null")
continue;
// Ignore "type" and "style", we've already checked it
if (attr.Name == attr_type || attr.Name == attr_style)
continue;
if (attr.Name == attr_name)
{
CStr name(attr.Value);
for (const std::pair<CStr, CStr>& sub : NameSubst)
name.Replace(sub.first, sub.second);
object->SetName(name);
NameSet = true;
continue;
}
if (attr.Name == attr_hotkey)
hotkeyTag = attr.Value;
if (attr.Name == attr_z)
ManuallySetZ = true;
if (object->SetSetting(pFile->GetAttributeString(attr.Name), attr.Value.FromUTF8(), true) != PSRETURN_OK)
LOGERROR("GUI: (object: %s) Can't set \"%s\" to \"%s\"", object->GetPresentableName(), pFile->GetAttributeString(attr.Name), attr.Value);
}
//.........这里部分代码省略.........
示例2:
CStr::CStr(CStr const &s)
{
strcpy(this.sData,s.get());
}
示例3: printf
void GrabCutMF::Demo(CStr &wkDir, float w1, float w2, float w3, float alpha, float beta, float gama, float mu)
{
CStr imgDir = wkDir + "Imgs/", salDir = wkDir + "Sal4N/", iluDir = wkDir + "Ilu4N/";
vecS namesNE;
int imgNum = CmFile::GetNamesNE(imgDir + "*.jpg", namesNE);
CmFile::MkDir(salDir);
CmFile::MkDir(iluDir);
printf("w1 = %g, w2 = %g, w3 = %g, alpha = %g, beta = %g, gama = %g, mu = %g\n", w1, w2, w3, alpha, beta, gama, mu);
// Number of labels
//const int M = 2;
CmTimer tm("Time"), tmIni("TimeIni"), tmRef("TimeRef");
double maxWeight = 2; // 2: 0.958119, 1: 0.953818,
tm.Start();
#pragma omp parallel for
for (int i = 0; i < imgNum; i++){
printf("Processing %d/%d: %s%s.jpg%20s\r\n", i, imgNum, _S(imgDir), _S(namesNE[i]), "");
CmFile::Copy(imgDir + namesNE[i] + ".jpg", salDir + namesNE[i] + ".jpg");
//CmFile::Copy(imgDir + namesNE[i] + ".png", salDir + namesNE[i] + "_GT.png");
Mat _imMat3u = imread(imgDir + namesNE[i] + ".jpg"), imMat3f, imMat3u, gt1u;
Mat _gt1u = imread(imgDir + namesNE[i] + ".png", CV_LOAD_IMAGE_GRAYSCALE);
if(_gt1u.rows == 0 && _gt1u.cols == 0) {
cout<<"Error: unable to open "<<(imgDir + namesNE[i] + ".png")<<endl;
continue;
}
blur(_gt1u, _gt1u, Size(3,3));
Mat _res1u = Mat::zeros(_imMat3u.size(), CV_8U);
Rect wkRect = CmCv::GetMaskRange(_gt1u, 30, 200);
_imMat3u(wkRect).copyTo(imMat3u);
_gt1u(wkRect).copyTo(gt1u);
imMat3u.convertTo(imMat3f, CV_32FC3, 1/255.0);
Rect rect = CmCv::GetMaskRange(gt1u, 5, 128);
Mat edge1u; // Use an edge map to expand the background mask in flat (no edge) region
CmCv::CannySimpleRGB(imMat3u, edge1u, 120, 1200, 5);
dilate(edge1u, edge1u, Mat(), Point(-1, -1), 3);
Mat borderMask1u(imMat3u.size(), CV_8U), tmpMask;
memset(borderMask1u.data, 255, borderMask1u.step.p[0] * borderMask1u.rows);
borderMask1u(rect) = Scalar(0);
getGrabMask(edge1u, borderMask1u);
//* The Mean field based GrabCut
//tmIni.Start();
GrabCutMF cutMF(imMat3f, imMat3u, salDir + namesNE[i], w1, w2, w3, alpha, beta, gama, mu);
//Mat borderMask1u = CmCv::getGrabMask(imMat3u, rect), tmpMask;
imwrite(salDir + namesNE[i] + "_BM.png", borderMask1u);
imwrite(salDir + namesNE[i] + ".jpg", imMat3u);
//imwrite(salDir + namesNE[i] + "_GT.png", gt1u);
cutMF.initialize(rect, borderMask1u, (float)maxWeight, true);
//cutMF.setGrabReg(rect, CmCv::getGrabMask(imMat3u, rect));
//tmIni.Stop();
//tmRef.Start();
cutMF.refine();
//tmRef.Stop();
Mat res1u = cutMF.drawResult(), invRes1u;
res1u.copyTo(_res1u(wkRect));
imwrite(salDir + namesNE[i] + "_GCMF1.png", _res1u);
//if (sum(res1u).val[0] < EPS){
// printf("%s.jpg don't contains a salient object\n", _S(namesNE[i]));
// continue;
//}
dilate(res1u(rect), tmpMask, Mat(), Point(-1, -1), 10);
bitwise_not(tmpMask, borderMask1u(rect));
getGrabMask(edge1u, borderMask1u);
//blur(res1u, invRes1u, Size(3, 3));
//
//PointSeti hullPnts;
//convexHullOfMask(invRes1u, hullPnts);
//fillConvexPoly(invRes1u, hullPnts, 255);
//bitwise_not(invRes1u, invRes1u);
//bitwise_or(invRes1u, borderMask1u, borderMask1u);
imwrite(salDir + namesNE[i] + "_MB2.png", borderMask1u);
//double w = maxWeight - (maxWeight-1)*sum(res1u).val[0]/(borderMask1u.rows*borderMask1u.cols*255 - sum(borderMask1u).val[0]);
cutMF.initialize(rect, borderMask1u, 2);
cutMF.refine();
//printf("weight = %g\n", w);
//imshow("Result", res1u);
//imshow("Possible", borderMask1u);
//imshow("Image", imMat3f);
//waitKey(0);
res1u = cutMF.drawResult();
Rect rectRes = CmCv::GetMaskRange(res1u, 5, 128);
if (rectRes.width * 1.1 < rect.width || rectRes.height * 1.1 < rect.height){ // Too short result
printf("%s.jpg contains a small object\n", _S(namesNE[i]));
memset(borderMask1u.data, 255, borderMask1u.step.p[0] * borderMask1u.rows);
borderMask1u(rect) = Scalar(0);
cutMF.initialize(rect, borderMask1u, 2);
cutMF.refine();
//.........这里部分代码省略.........
示例4:
template <> void XMLWriter_File::ElementAttribute<CStr>(const char* name, const CStr& value, bool newelement)
{
ElementAttribute(name, value.c_str(), newelement);
}
示例5: LOGWARNING
void CGUI::Xeromyces_ReadSprite(XMBElement Element, CXeromyces* pFile)
{
// Sprite object we're adding
CGUISprite* Sprite = new CGUISprite;
// and what will be its reference name
CStr name;
//
// Read Attributes
//
// Get name, we know it exists because of DTD requirements
name = Element.GetAttributes().GetNamedItem( pFile->GetAttributeID("name") );
if (m_Sprites.find(name) != m_Sprites.end())
LOGWARNING(L"GUI sprite name '%hs' used more than once; first definition will be discarded", name.c_str());
//
// Read Children (the images)
//
SGUIImageEffects* effects = NULL;
// Iterate children
XMBElementList children = Element.GetChildNodes();
for (int i=0; i<children.Count; ++i)
{
// Get node
XMBElement child = children.Item(i);
CStr ElementName (pFile->GetElementString(child.GetNodeName()));
if (ElementName == "image")
{
Xeromyces_ReadImage(child, pFile, *Sprite);
}
else if (ElementName == "effect")
{
if (effects)
{
LOGERROR(L"GUI <sprite> must not have more than one <effect>");
}
else
{
effects = new SGUIImageEffects;
Xeromyces_ReadEffects(child, pFile, *effects);
}
}
else
{
debug_warn(L"Invalid data - DTD shouldn't allow this");
}
}
// Apply the effects to every image (unless the image overrides it with
// different effects)
if (effects)
for (std::vector<SGUIImage*>::iterator it = Sprite->m_Images.begin(); it != Sprite->m_Images.end(); ++it)
if (! (*it)->m_Effects)
(*it)->m_Effects = new SGUIImageEffects(*effects); // do a copy just so it can be deleted correctly later
delete effects;
//
// Add Sprite
//
m_Sprites[name] = Sprite;
}
示例6: ENSURE
void CGUI::Xeromyces_ReadObject(XMBElement Element, CXeromyces* pFile, IGUIObject *pParent, const std::vector<std::pair<CStr, CStr> >& NameSubst, boost::unordered_set<VfsPath>& Paths)
{
ENSURE(pParent);
int i;
// Our object we are going to create
IGUIObject *object = NULL;
XMBAttributeList attributes = Element.GetAttributes();
// Well first of all we need to determine the type
CStr type (attributes.GetNamedItem(pFile->GetAttributeID("type")));
if (type.empty())
type = "empty";
// Construct object from specified type
// henceforth, we need to do a rollback before aborting.
// i.e. releasing this object
object = ConstructObject(type);
if (!object)
{
// Report error that object was unsuccessfully loaded
LOGERROR(L"GUI: Unrecognized object type \"%hs\"", type.c_str());
return;
}
// Cache some IDs for element attribute names, to avoid string comparisons
#define ELMT(x) int elmt_##x = pFile->GetElementID(#x)
#define ATTR(x) int attr_##x = pFile->GetAttributeID(#x)
ELMT(object);
ELMT(action);
ELMT(repeat);
ATTR(style);
ATTR(type);
ATTR(name);
ATTR(hotkey);
ATTR(z);
ATTR(on);
ATTR(file);
//
// Read Style and set defaults
//
// If the setting "style" is set, try loading that setting.
//
// Always load default (if it's available) first!
//
CStr argStyle (attributes.GetNamedItem(attr_style));
if (m_Styles.count("default") == 1)
object->LoadStyle(*this, "default");
if (! argStyle.empty())
{
// additional check
if (m_Styles.count(argStyle) == 0)
{
LOGERROR(L"GUI: Trying to use style '%hs' that doesn't exist.", argStyle.c_str());
}
else object->LoadStyle(*this, argStyle);
}
//
// Read Attributes
//
bool NameSet = false;
bool ManuallySetZ = false; // if z has been manually set, this turn true
CStr hotkeyTag;
// Now we can iterate all attributes and store
for (i=0; i<attributes.Count; ++i)
{
XMBAttribute attr = attributes.Item(i);
// If value is "null", then it is equivalent as never being entered
if (CStr(attr.Value) == "null")
continue;
// Ignore "type" and "style", we've already checked it
if (attr.Name == attr_type || attr.Name == attr_style)
continue;
// Also the name needs some special attention
if (attr.Name == attr_name)
{
CStr name (attr.Value);
// Apply the requested substitutions
for (size_t j = 0; j < NameSubst.size(); ++j)
name.Replace(NameSubst[j].first, NameSubst[j].second);
object->SetName(name);
NameSet = true;
continue;
}
//.........这里部分代码省略.........
示例7: PackString
void CFilePacker::PackString(const CStr& str)
{
const size_t length = str.length();
PackSize(length);
PackRaw(str.c_str(), length);
}