【发布时间】:2013-03-18 15:12:25
【问题描述】:
string = std::vector<int>(6,0) 并希望它显示为{ 0 0 0 0 0 0 }
我试过了
#include <iostream>
using namespace std;
int main()
{
string str = "std::vector<int>(6,0)" ;
unsigned found = str.find('(');
char c = str[found+1];
int i = c - '0';
char ch = str[found+3];
int j = ch - '0';
str = "{ ";
for(int k = 0; k < i ; k++)
{
str = str + ch + " " ;
}
str = str + " }";
cout << str << endl;
return 0;
}
它可以工作,但看起来效率不高。有更好的主意吗?
【问题讨论】:
-
这可能有点矫枉过正,但我相信pretty printer 可以处理它。
-
效率高但不够灵活。
-
如果您正在寻找一种更灵活的方式来解析此类内容,您可能需要使用 std::regex 或 boost::spirit。正则表达式永远不会让人失望
-
所以您正在解析一个恰好包含 C++ 代码的字符串,并且想要打印您认为它包含的内容?这是用于代码分析工具吗?如果没有,也许有更好的方法。
-
如果向量的大小是两位数,这将不起作用