字符串流到字符串返回
Stringstream to string return?
所以我必须写一个.dot文件来制作一个排序的avl树的图形图像。提供了方法标头,我必须凑合着使用它。
主要问题是当 build_dot_content() 方法是 std::string 的一部分时,如何正确调用该方法?
void avl::dump_dot(std::string filename){
string s;
ofstream fptr;
fptr.open(filename);
fptr<<"digraph AVL {"<<endl<<"graph [dpi=150];"<<endl<<"nodsep=0.3;"<<endl;
fptr<<"ranksep=0.2;"<<endl<<"margin=0.1"<<endl<<"node [shape = circle fontname="Helvetica"];"<<endl;
fptr<<"edge [arrowsize=0.8]"<<endl<<endl;
stringstream o;
s=string build_dot_content(o, root, 1);
fptr<<s<<endl<<"}"<<endl;
}
std::string build_dot_content(std::stringstream &o, avl_node *e, int i) {
o<<"node"<<i<<" [label =""<<e->element<<""];"<<endl;
int iL = 2*i;
int iR = 2*i+1;
if(e->left != nullptr){
o<<"node"<<i<<" -> node"<<iL<<";"<<endl;
build_dot_content(o, e->left, iL);
}
if(e->right != nullptr){
o<<"node"<<i<<" -> node"<<iR<<";"<<endl;
build_dot_content(o, e->right, iR);
}
string s;
s = o.str();
return s;
}
您需要将此函数分解为两个;
- 与节点和
i
一起调用的主函数 - 仅流式传输节点的第二个函数
使用根节点从第一个函数调用第二个函数,并在该函数中递归调用自身以流出树。在 main 函数的末尾,从流生成字符串并返回它。
--或者
你转储函数已经有一个流,把它与节点和索引一起传递给build_dot_content
函数,这可以递归地流出元素 - 它不应该返回字符串......
相关文章:
- C 字符串返回字符串的整数/双精度/长整型值
- std::hash<std::string> 可以为不同的字符串返回相同的值吗?
- Java 调用 dll 字符串返回类型方法
- 返回具有C++字符串返回值的函数的本地 C 字符串
- 如何将两个 jlong 数据类型转换为 jstring,然后将两个字符串连接在一起以便从 JNI 将字符串返回给 jav
- 尝试以随机字符(长读取)打印字符串返回结果
- 从字符串返回 i(索引)字
- 函数读取最大和min int值,并用文本字符串返回
- 如何将 YAML 节点中的序列作为字符串返回?
- 将注册表项读取为字符串返回数值
- 为什么我在尝试打印字符串返回时收到编译器错误?
- 使用 char*array 存储条形图的条形图,以便我可以动态制作它并作为字符串返回
- 字符串返回功能不起作用 - 'identifier is underfined'
- 将C 本地字符串返回到另一个功能
- 在MATLAB中仅接受INT32PTR时,将错误编号作为字符串返回
- 字符串流到字符串返回
- 字符串返回错误的长度
- 从共享指针矢量字符串返回值
- C++随机字符串返回意外结果
- 临时标准::字符串返回垃圾