本文整理汇总了C++中mrs_string::length方法的典型用法代码示例。如果您正苦于以下问题:C++ mrs_string::length方法的具体用法?C++ mrs_string::length怎么用?C++ mrs_string::length使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类mrs_string
的用法示例。
在下文中一共展示了mrs_string::length方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: is
void
Collection::read(mrs_string filename)
{
ifstream is(filename.c_str());
name_ = filename.substr(0, filename.rfind(".", filename.length()));
is >> (*this);
}
示例2: if
/* convert a string representing time to number of samples base on the
given sample rate. Format "123.456#" where # is the time division.
Valid time divisions: { h, m, s, ms, us }.
On a format error,
Errors: -1 is returned. ie more than 1 decimal point, invalid time
division.
*/
mrs_natural
Marsyas::time2samples(mrs_string time, mrs_real srate) {
//example times: { "10us", "10ms", "10s", "10m", "10h" }
if (time=="") { return 0; }
// calculate time value
mrs_real samples=0;
int i=0;
int len=(int)time.length();
bool decimal_point=false;
mrs_real divisor = 10.0;
for (i=0; i<len && (time[i]=='.' || (time[i]>='0' && time[i]<='9')); ++i) {
if (decimal_point) {
if (time[i]=='.') { return -1; }
samples = samples + ((mrs_real)(time[i]-'0'))/divisor;
divisor = divisor * 10.0;
} else if (time[i]=='.') {
decimal_point=true;
} else {
samples = samples * 10.0 + (time[i]-'0');
}
}
//
if (i<len) {
char a=time[++i];
if (i>=len) {
if (a=='h') { // hours
samples= 120.0*samples*srate;
} else if (a=='m') { // minutes
samples= 60.0*samples*srate;
} else if (a=='s') { // seconds
samples= samples*srate;
} else {
return -1;
}
} else {
char b=time[i];
if ((i+1)>=len) {
if (a=='u' && b=='s') { // micro-seconds
samples= samples/1000000.0*srate;
} else if (a=='m' && b=='s') { // milli-seconds
samples= samples/1000.0*srate;
} else {
return -1;
}
}
}
}
return (mrs_natural)samples;
}
示例3: f
bool
TimeLine::load(mrs_string filename, mrs_string lexicon_labels)
{
ifstream in;
filename_ = filename;
if(filename == "")
return false;
in.open(filename.c_str());
if(!in.is_open())
{
MRSWARN("TimeLine::load() - Problem opening file " << filename_);
return false;
}
FileName f(filename);
vector<mrs_string> labels;
// Load lexicon dictionary if available
mrs_string lexicon_label;
mrs_string remainder;
size_t nLabels;
nLabels = std::count(lexicon_labels.begin(), lexicon_labels.end(), ',');
if (lexicon_labels != ",")
{
for (size_t i=0; i < nLabels; i++)
{
lexicon_label = lexicon_labels.substr(0, lexicon_labels.find(","));
labels.push_back(lexicon_label);
sort(labels.begin(), labels.end());
remainder = lexicon_labels.substr(lexicon_labels.find(",") + 1, lexicon_labels.length());
lexicon_labels = remainder;
}
}
else
nLabels = 0;
if (f.ext() == "txt") // audacity label format
{
numRegions_ = 0;
mrs_real start, end;
mrs_string label;
regions_.clear();
while (!in.eof())
{
in >> start >> end >> label;
TimeRegion region;
region.start = (mrs_natural) (start * srate_);
region.end = (mrs_natural) (end * srate_);
region.classId = 1;
region.name = label;
mrs_bool label_found = false;
for (unsigned int i=0; i < labels.size(); i++)
{
if (label == labels[i])
{
label_found = true;
region.classId = i;
}
}
if (!label_found)
{
if (lexicon_labels == ",")
{
labels.push_back(label);
sort(labels.begin(), labels.end());
}
}
regions_.push_back(region);
numRegions_ ++;
}
// relabel classIds so that they correspond to sorted labels
for (mrs_natural i=0; i < numRegions_; ++i)
{
mrs_string label = regions_[i].name;
vector<mrs_string>::iterator it = find(labels.begin(), labels.end(), label);
if (it == labels.end())
regions_[i].classId = (mrs_natural)-1;
mrs_natural l = distance(labels.begin(), it);
regions_[i].classId = l;
}
// last region is a duplicate due to empty last line
//.........这里部分代码省略.........
示例4: remove
void
WekaSink::putHeader(mrs_string inObsNames)
{
//updctrl(ctrl_putHeader_, false);
ctrl_putHeader_->setValue(true);
// Only write the header when we are dealing with a new file, i.e. when
// the filename setting differs from the filename we were (previously)
// writing to.
if ((filename_ != ctrl_filename_->to<mrs_string>()))
{
// Close the previously used output file if needed and cleanup.
if (mos_ != NULL)
{
mos_->close();
delete mos_;
// TODO: do something about this ugly hack.
if (filename_ == "weka.arff")
{
remove(filename_.c_str());
}
}
// Set the current filename to the new value.
filename_ = ctrl_filename_->to<mrs_string>();
// Open a new output stream.
mos_ = new ofstream;
mos_->open(filename_.c_str());
// General header stuff.
(*mos_) << "% Created by Marsyas" << endl;
(*mos_) << "@relation " << filename_ << endl;
// The number of attributes is one less than the number of input
// observations because we assume the last observation is for the label?
// TODO: why this assumption? What if a use case requires two labels per
// feature vector or no labels?
// There is no such assumption is the WEKA ARFF format anyway.
mrs_natural nAttributes = ctrl_inObservations_->to<mrs_natural>() - 1;
mrs_natural nLabels = ctrl_nLabels_->to<mrs_natural>();
// Print the attribute names.
// TODO: this is could be done way more elegant
// (e.g. using a 'split()' or 'explode()' function).
mrs_natural i;
for (i =0; i < nAttributes; ++i)
{
mrs_string inObsName;
mrs_string temp;
inObsName = inObsNames.substr(0, inObsNames.find(","));
temp = inObsNames.substr(inObsNames.find(",") + 1, inObsNames.length());
inObsNames = temp;
// TODO: what's the point of using an extra ostringstream here?
ostringstream oss;
// oss << "attribute" << i;
(*mos_) << "@attribute " << inObsName << " real" << endl;
}
// The attribute for the label.
if (!ctrl_regression_->isTrue())
{
(*mos_) << "@attribute output {";
// TODO: this could be done way more elegant
// (e.g. with a 'join()' or 'implode()' function).
for (i=0; i < nLabels; ++i)
{
// TODO: what's the point of using an extra ostringstream here?
ostringstream oss;
// oss << "label" << i;
oss << labelNames_[i];
(*mos_) << oss.str();
if (i < nLabels - 1)
{
(*mos_) << ",";
}
// (*mos_) << "@attribute output {music,speech}" << endl;
}
(*mos_) << "}" << endl;
}
else
{
(*mos_) << "@attribute output real" << endl;
}
// End of header, now we are ready for outputting the data.
(*mos_) << "\n\[email protected]" << endl;
}
}