如何操作字符串以小写并存储在同一个变量中

时间:2014-05-29 17:20:00

标签: c++ string tolower

我有一段代码要求用户输入,它是类型"字符串"它是一个非常简单的过程,我希望使用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;无论哪种方式

2 个答案:

答案 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;功能