gpt4 book ai didi

c++ - 提供给 std::stringstream 并同时将其作为参数传递给函数 c++

转载 作者:行者123 更新时间:2023-11-30 05:30:09 51 4
gpt4 key购买 nike

我有以下功能

void Assembly::push_back(stringstream& ss){
instructions->push_back(ss.str());
}

std::ostream& pad(std::ostream& os) {
return os <<"\t"<<std::left<< std::setfill(' ') << std::setw(8);
}

哪里instructions是一个字符串列表。我想做某事,比如

Assembly outfile;
stringstream ss;
outfile.push_back(ss<<pad<<"addiu"<<"$sp, $sp, -8");

但是我从编译器那里得到一个错误

no known conversion for argument 1 from 'std::basic_ostream<char>' to 'std::stringstream& {aka std::basic_stringstream<char>&}'

我尝试更改 push_back 的定义采取std::basic_ostream<char>但它仍然没有编译。

基本上我想做的是能够 push_back 一个字符串,该字符串的对齐方式为 pad添加。我能够调用 Assembly::push_back 也很重要在一行中(我知道

Assembly outfile;
stringstream ss;
ss<<pad<<"addiu"<<"$sp, $sp, -8";
outfile.push_back(ss);

有效,但需要两行代码才能正确调用)。我也愿意接受重载 operator<< 的解决方案对于 Assembly或者让我在一行中完成所需的行为。

最佳答案

让你的 pad() 获取并返回一个 std::stringstream,然后添加:

template <typename T>
std::stringstream &
operator<<(std::stringstream &ss, const T &o) {
static_cast<std::ostream &>(ss) << o; // Prevent recursion.
return ss;
}

关于c++ - 提供给 std::stringstream 并同时将其作为参数传递给函数 c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36116683/

51 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com