#include <cstring>
#include <stdio.h>
#include <cstdlib>
-#include <sstream>
using std::string;
return r;
}
-std::string append_parameters(std::map<char,float> params)
+int append_parameters(char *buf, std::vector<std::pair<char,float>> params, size_t bufsize)
{
- std::ostringstream oss;
+ size_t n= 0;
for(auto &i : params) {
- oss << i.first << i.second << " ";
+ if(n >= bufsize) break;
+ buf[n++]= i.first;
+ n += snprintf(&buf[n], bufsize-n, "%1.4f ", i.second);
}
- return oss.str();
+ return n;
}
#include <stdint.h>
#include <string>
#include <vector>
-#include <map>
+
using std::string;
using std::vector;
string absolute_from_relative( string path );
-std::string append_parameters(std::map<char,float> params);
+int append_parameters(char *buf, std::vector<std::pair<char,float>> params, size_t bufsize);
#endif
#include <vector>
#include <stdio.h>
+#include <string.h>
#include "easyunit/test.h"
TEST(UtilsTest,append_parameters)
{
- std::string str;
+ char buf[132];
- str= append_parameters({{'X', 1}, {'Y', 2}, {'Z', 3}});
- ASSERT_EQUALS(str, "X1 Y2 Z3 ");
+ int n= append_parameters(buf, {{'X', 1}, {'Y', 2}, {'Z', 3}}, sizeof(buf));
+ //printf("%d - %s\n", n, buf);
+ ASSERT_TRUE(n == 24);
+ ASSERT_TRUE(strcmp(buf, "X1.0000 Y2.0000 Z3.0000 ") == 0);
}