///Create a test harness that runs tests matching the substrings ///passed on the command line. argc and argv are interpreted as if ///they were the arguments to main. If no substrings are given ///(that is, no arguments are passed), all tests are run, as if one ///argument of an empty string had been given. GTestHarness(int argc, char**argv) { //Make list of test names to match if(argc < 2){ m_testNameSubstr.push_back(""); }else{ for(int i = 1; i < argc; ++i){ m_testNameSubstr.push_back(argv[i]); } } //Ready performance stats char buf[256]; if(GApp::appPath(buf, 256, true) == -1) throw Ex("Failed to retrieve app path"); if(chdir(buf) != 0) throw Ex("Failed to change the dir to the app folder"); m_testTimes.flags(std::ios::showpoint | std::ios::skipws | std::ios::dec | std::ios::fixed | std::ios::left); m_testTimes.width(PERF_FILE_CHARS); m_testTimes.precision(PERF_FILE_CHARS - 3); string s; GTime::appendTimeStampValue(&s, "-", " ", ":", false); m_testTimes << s; }
// 通过libxl库读取单元格内容,本接口速度较快,但不支持公式(只能读取公式的内容,无法得到公式计算结果) std::string& libxl_get_cell_str(libxl::Sheet &sheet, int row, int col) { static const int prec=std::numeric_limits<long long>::digits10 + 10; // 18 static std::string result; libxl::CellType cell_type = sheet.cellType(row, col); switch (cell_type) { case libxl::CELLTYPE_STRING: { //字符串 const wchar_t *w = sheet.readStr(row, col); //const std::wstring wstr(w); return strtool::wstring2string(w); } case libxl::CELLTYPE_NUMBER: { static std::ostringstream o; o.str(""); o.precision(prec);//覆盖默认精度 double dd = sheet.readNum(row, col); o << dd; result = o.str(); break; } default: result = ""; break; } return result; }
// 通过ole的方式读取单元格内容,由于ole才支持公式,所以tokit只在单元格含公式时才调用本接口,除此之外通过libxl库来调用,因为libxl读取速度快很多 std::string& ole_get_cell_str(COleSafeArray &ole_safe_array, int row, int col) { static const int prec=std::numeric_limits<long long>::digits10 + 10; // 18 static COleVariant vResult; static CString str; //字符串 static long read_address[2]; static VARIANT val; static std::string result; read_address[0] = row; read_address[1] = col; ole_safe_array.GetElement(read_address, &val); vResult = val; switch(vResult.vt){ case VT_BSTR: { //字符串 const wchar_t *w = vResult.bstrVal; // const std::wstring wstr(w); return strtool::wstring2string(w); } //单元格空的 case VT_EMPTY: //整数 case VT_INT: result = ""; break; //8字节的数字 case VT_R8: { static std::ostringstream oss; oss.str(""); oss.precision(prec);//覆盖默认精度 oss << vResult.dblVal; result = oss.str(); break; } //时间格式 case VT_DATE: { SYSTEMTIME st; VariantTimeToSystemTime(vResult.date, &st); CTime tm(st); str = tm.Format("%Y-%m-%d"); break; } default: result = ""; break; } return result; }
void SVC_CrosshairAngle_ToString_Internal(std::ostringstream& out, NetMsg::SVC_CrosshairAngle* data) { const std::streamsize oldPrecision = out.precision(); out << "svc_CrosshairAngle:" << std::setprecision(1) << std::fixed << " (" << data->angle.x << " " << data->angle.y << " " << data->angle.z << ")" << std::setprecision(oldPrecision); out.unsetf(std::ios_base::floatfield); }
void s2cellidToJson(S2CellId* s2cellid, std::ostringstream& stringStream, bool last) { S2Cell cell(*s2cellid); S2LatLng center(cell.id().ToPoint()); stringStream.precision(30); stringStream << "{" << endl << "\"id\": \"" << cell.id().id() << "\"," << endl << "\"id_signed\": \"" << (long long)cell.id().id() << "\"," << endl << "\"token\": \"" << cell.id().ToToken() << "\"," << endl << "\"pos\":" << cell.id().pos() << "," << endl << "\"face\":" << cell.id().face() << "," << endl << "\"level\":" << cell.id().level() << "," << endl << "\"ll\": { " << endl << "\"lat\":" << center.lat().degrees() << "," << endl << "\"lng\":" << center.lng().degrees() << "" << endl << "}," << endl << "\"shape\": [ " << endl; for (int i = 0; i < 4; i++) { S2LatLng vertex(cell.GetVertex(i)); stringStream << "{ " << endl << "\"lat\":" << vertex.lat().degrees() << "," << endl << "\"lng\":" << vertex.lng().degrees() << "" << endl << "}" << endl; if (i != 3) { stringStream << ","; } } stringStream << "]" << endl << "}"; if (!last) { stringStream << ","; } stringStream << endl; }
if (qs.size() < 2) throw std::invalid_argument(Exception(String("joint waypoint text file must contain at least 2 'waypoint' vectors"))); init(qs,times,deltas); } else { // output std::ostringstream out; // comment header out << "# Joint waypoint trajectory [joint positions & times (at-end)]" << std::endl; out << "# the following line should be 'absolute' for absolute qi's & t values or 'relative' if the vectors represent inter-waypoint deltas dqi's & dt" << std::endl; out << "absolute" << std::endl; // not "relative" out << "# q0 q1 ... qn t" << std::endl; std::ostream::fmtflags savedFlags = out.setf(std::ios_base::dec | std::ios_base::right); Int savedPrec = out.precision(10); Int savedWidth = out.width(13); const Int dof=qs[0].size(); // this is a hack, as under gcc the flags don't appear to stay set after an output op (!?) #define setflags \ out.setf(std::ios_base::dec | std::ios_base::right); \ out.precision(10); \ out.width(13); setflags; for(Int i=0; i<qs.size(); i++) { Vector q(qs[i]); Time t(times[i]); for(Int e=0; e<dof; e++)