使用std::cout打印字符N次

43

如何使用 std::cout 而不使用循环打印字符N次?

有没有一种方法可以将文本光标移回以取消 std::cout << std::endl; 的影响? 也就是说,向上移动一行(假设在执行 std :: cout<< std :: endl; 操作之后我们没有打印任何东西)。


C语言:https://dev59.com/aGUq5IYBdhLWcg3wN94t - Ciro Santilli OurBigBook.com
3个回答

80
 std::cout << std::string(100, '*') << std::endl;

要将一行向上移动,你需要使用终端转义字符(假设 isatty() 函数表明你正在运行终端)。

2
或者根本就不打印行末符号(EOL)? - Mawg says reinstate Monica
没错,我考虑过了。在我的特定程序中,否则似乎更容易一些。 - shiraz
这不适用于Unicode字符。 - Mr. Clear
@Mr.Clear 显然,Unicode 不被支持(且现有的一些小机制已经被弃用)。我认为最好的想法可能是在此处使用 fmt::format:https://compiler-explorer.com/z/1f98dTn5e - sehe

27
std::cout << std::setfill(the_char) << std::setw(100) << "";

0
有没有办法回到空值的状态,以消除cout << endl; 的影响;即使我们在执行cout << endl; 操作后没有打印任何内容,也可以向上移动一行。非常感谢!
使用三元运算符(或if语句,如果您喜欢)...类似于...
void PrintCharNtimes(char chatToPrint; int numTimes)
{
   std::cout << std::string(numTimes, chatToPrint) << (numTimes > 0) ? std::endl : ;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接