2013-07-14 21 views
0

我有一个路径不变应格式化:如何格式化CPP方式?

using std::string; 

const string PATH = "/sys/class/gpio/gpio%d/value"; 

目前我只是现在如何做到这一点的C-方式与asprintf:什么是CPP(流)的方式来

char * path; 

asprintf(&path, "/sys/class/gpio/gpio%d/value", 44); 

/* use path */ 

free(path); 

这样做(不幸的是不能使用C++ 11)?

回答

3

使用std::stringstream是单向的:

#include <sstream> 
using namespace std; 

... 

int val = 44; 

stringstream ss; 
ss << "/sys/class/gpio/gpio" << val << "/value"; 

string path = ss.str(); 

另一种方法是boost::format,但我不充分熟悉给示例代码现在...

+0

怎么可能有用的结合这常量? – bodokaiser

+0

@bodokaiser:“有用的常量”是什么意思? –

+0

使用asprintf允许我定义一个常量GPIO_PATH,其值为“/ sys/class/gpio/gpio%d/value”,这对于不对路径进行硬编码很有用。当我现在使用字符串流时,我必须将路径分成几个常量(例如GPIO_PATH_PREFIX,GPIO_PATH_POSTFIX)。你为此推荐一个好的命名约定吗? – bodokaiser