尝试打印转义字符x次

Trying to print an escape character x number of times

本文关键字:转义字符 打印      更新时间:2023-10-16

我想这样做printf (" % s ", ' t ' * 3);我只是想知道是否有一种方法可以打印这样的东西而不循环

printf("%s%s%s", "t", "t", "t"); ?只是开玩笑。但是既然你把它标记为c++,因为我不知道你在这里试图解决什么更高层次的问题,你是否考虑过只使用适当的std::string构造函数?

std::string s(3, 't');

甚至可以使用printf如果你真的坚持…

printf("%s", std::string(3, 't').c_str());

为什么不直接用std::cout呢?

std::cout << std::string(3, 't');

关于"不循环"部分…当然,printfstd::string在它们的实现中都可能有循环。但这应该不会困扰你。

假设您创建了运行时循环并允许使用boost,您可以在编译时使用模板创建字符串:

#include <iostream>
#include <boost/mpl/char.hpp>
#include <boost/mpl/string.hpp>
using namespace boost;
template <unsigned int C, int R>
struct repchrn
{
    typedef typename mpl::push_back<typename repchrn<C, R - 1>::string, mpl::char_<C>>::type string;
    static const char* getString() { return mpl::c_str<string>::value; }
};
template <unsigned int C>
struct repchrn<C, 0>
{
    typedef mpl::string<> string;
    static const char* getString() { return mpl::c_str<string>::value; }
};

int main() {
    printf("%s", repchrn<'a', 5>::getString());
    /* or */ std::cout << std::endl;
    std::cout << repchrn<'a', 5>::getString();
}