我有以下示例代码块:

#include <iostream>
#include <iomanip>
#include <string>
using namespace std;

int main(){
    string blank = " ";
    cout << "Hello" << blank << "47";
}

我的原始代码中有很多这种类型的提示。
我希望能够将空白字符串更改为setw(2)函数,而不必在代码中包含的每一个cout上将空白替换为setw(2)。
那么有没有办法将cpp函数设置为变量?
这样我可以通过键入名称来调用该函数?
例如:
func blank = setw(2);
cout<< "Hello" << blank << "47";

最佳答案

std::setw(x)的类型是unspecified,但是您不需要知道它。

您可以只使用auto:

auto blank = std::setw(2);

正如@StoryTeller指出的那样,尽管这应该在合理的实现中起作用,但并不能保证这样做。

一个更安全的选择是使用<<重载来创建一个类:
struct blank_t {} blank;

std::ostream &operator<<(std::ostream &s, blank_t)
{
    return s << std::setw(2);
}

关于c++ - 将setw()放置为变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47250607/

10-11 22:48