我有一段代码要求用户输入,它是类型"字符串"它是一个非常简单的过程,我希望使用tolower()函数转换任何用户输入。它完全像它应该做的那样,但我似乎无法将它分配给同一个变量。有什么帮助吗?
#include <locale>
#include <string>
#include <iostream>
//maybe some other headers, but headers aren't the problem, so I am not going to list them all
while (nCommand == 0)
{
locale loc;
string sCommand;
cin >> sCommand;
for (int i = 0; i < sCommand.length(); ++i)
{
sCommand = tolower(sCommand[i],loc);
cout << sCommand;
}
例如,如果用户键入帮助sCommand将是h
如果用户键入HELP或Help或HeLp
,我希望它看起来如何sCommand应该是&#39; help&#39;无论哪种方式
答案 0 :(得分:1)
当你真正想要做的是将存储在该位置的角色分配给小写版本时,你正在为一个角色分配一个字符串。
因此改变这个:
sCommand = tolower(sCommand[i], loc);
到此:
sCommand[i] = tolower(sCommand[i], loc);
// ^^^
答案 1 :(得分:1)
这是Boost String Algorithms将整个问题简化为单个表达式的另一种情况:
boost::algorithm::to_lower(sCommand)
尝试Boost库。从长远来看,它将极大地帮助你,让你专注于真正的问题而不是愚蠢,就像成为第一百万个程序员来编写他们自己的&#34;将字符串转换为小写字母&#34;功能