C++ C++;渔获量
我有一个关于“捕获输出”的问题<代码>putchar(tolower(VAR))代码>不清楚您想要什么。您的循环可以很容易地 重写:C++ C++;渔获量,c++,C++,我有一个关于“捕获输出”的问题putchar(tolower(VAR))不清楚您想要什么。您的循环可以很容易地 重写: std::transform( var.begin(), var.end(), var.begin(), []( char ch) { tolower( static_cast<unsigned char>( ch ) ); } ) 比lambda的形式更清晰、更简单 表情。) 请注意,我已经消除了您未定义的行为 建议:不能直接调用一个参数
std::transform(
var.begin(), var.end(),
var.begin(),
[]( char ch) { tolower( static_cast<unsigned char>( ch ) ); } )
比lambda的形式更清晰、更简单
表情。)
请注意,我已经消除了您未定义的行为
建议:不能直接调用一个参数tolower
使用
char
而不会产生未定义的行为。听起来您需要做的是在Windows和Linux中使用getch()
或getche()
,您可以使用中描述的方法。有了这个,你可以从标准输入中获得字符输入,无论是否有对标准输出的回音。你可能想看看“管道”我不太清楚你的意思-你到底不想打印什么?如果你不想打印,为什么要使用putchar?谢谢,我注意到这不是我想要的,哈哈。@zennehoy我支持你。但是我认为c++
世界上的人喜欢把事情复杂化。J/KONE评论,独立于问题:在C++循环中有一个几乎通用的约定,即所有的上限都是为宏保留的(可能有一个字符模板参数除外)。不要对变量使用所有的大写。我正在对其他内容使用getch()
)无论如何,谢谢你。
std::transform(
var.begin(), var.end(),
var.begin(),
[]( char ch) { tolower( static_cast<unsigned char>( ch ) ); } )
std::transform( var.begin(), var.end(), var.begin(), ToLower() );