C++输入一个句子,使每个单词首字母大写,并输出.

2025-05-13 12:11:42
推荐回答(2个)
回答(1):

#include

#include

using namespace std;

int main()

{

string str;

while(cin>>str)

{

int size=str.length();

str[0]=str[0]-32;

//查看size数据 

cout << "size = " << size << endl;

for(int i=0;i

{

if(str[i]=='\t'){

str[i+1]=str[i+1]-32;

}

//查看每一个字符的输出结果 

cout << i << ":"<< str[i] << endl;

}

cout<< str << endl;

}

}

结果是:

问题出在:遇到空格时i就会重新计算。你是必须用while()吗,如果不是的话再试试。或者尝试使用getline()。

回答(2):

恕我愚昧,不知道'\t'是啥,重写了一个,环境:win7 64位旗舰版+VS2013旗舰版

/////////////////////////////////////////////////////////////////////////////

#include

#include


const int g_ascci_d_value = 32;//同一字母大小写的ascci差值


int main()

{

    //定义缓冲区

    std::string strInputBuff;


    //循环接收输入,输入单个字母q退出程序

    while (getline(std::cin, strInputBuff))

    {

        int iSize = strInputBuff.length();

        if (iSize == 1 && strInputBuff[0] == 'q')

        {

            std::cout << "exit";

            break;

        }


        //转换首字母(以空格区分单词)

        for (int i = 0; i

        {

            //首字母默认大写

            if (i == 0)

            {

                strInputBuff[i] = strInputBuff[i] - g_ascci_d_value;

                continue;

            }


            //空格自后的字母大写

            if (strInputBuff[i] == ' ')

            {

                //是小写字母才进行转换,否则忽略

                if (strInputBuff[i + 1] >= 97 && strInputBuff[i + 1] <= 122)

                {

                    strInputBuff[i + 1] = strInputBuff[i + 1] - g_ascci_d_value;

                }

                ++i;

            }

        }


        //输出转换结果

        std::cout << strInputBuff;


        //清空缓冲区

        strInputBuff.clear();

    }

}