C++捕获输出

C++ Catch Output

本文关键字:输出 C++      更新时间:2023-10-16

我有一个关于"捕获输出"的问题。putchar (tolower (VAR));<-这将以小写字母打印我刚刚通过std::getline (std::cin, VAR);输入的内容。我不想把这个印出来。如何"捕获"此输出,使其不显示在命令提示符上?

示例:输入"TeSTIngThis"->输出:"TeSTIngThis"

for (unsigned i = 0; i < VAR.length (); i++)
{
    char TEMP = VAR[i];
    VAR[i] = putchar (tolower (TEMP));
}

您想要什么还不清楚。你的循环很容易重写:

std::transform(
    var.begin(), var.end(),
    var.begin(),
    []( char ch) { tolower( static_cast<unsigned char>( ch ) ); } )

如果像我们大多数人一样,你没有C++11,你就必须为tolower创建一个函数对象。但是,如果你一旦需要这个,你很可能会再次需要它,这是有道理的将这样一个函数对象放入您的工具箱中。(这是真的即使你有C++11:

std::transform( var.begin(), var.end(), var.begin(), ToLower() );

比带lambda的形式更清晰、更简单表达式。)

注意,我已经消除了你未定义的行为建议:不能直接调用一个参数tolower具有CCD_ 4而不冒未定义行为的风险。

听起来您需要在Windows中使用getch()getche(),对于Linux,您可以使用本页中描述的方法。这样,您就可以从stdin获取字符输入,无论是否对stdout进行回显。