无论间距如何,都要将字母大写

时间:2018-02-20 03:45:19

标签: c++

大家好我对这段代码有疑问我正在练习cstrings。我制作了一个程序,将用户输入的句子的第一个字母大写。我假设用户在放置一段时间后会放一个空格,所以如果用户输入“im from。seattle”,输出将是“Im from。Seattle”。但是如果用户在句点之后没有放置空格,那么第二个字母将被大写,而不是第一个像“Im from.sEattle”那样的字母。如何将第一个字母大写,而不管间距是多少?

#include <iostream>
#include <cctype> //strlen, touper
#include <cstring>
using namespace std;
void funct(){
    int length = 50;
    char input[length];

    cout << "Sentence Capitalization Machine Mk.1.\n";
    cout << "Type a sentence for me to capitalize." << endl;
    cin.getline(input, length);
    cout << endl;

    input[0] = toupper(input[0]);
    int i=0;
    while (i < strlen(input)){
               i++;
               if (input[i] == '.'){
                input[ i + 2 ] = toupper(input[ i + 2 ]);
               }
   };

cout << input << endl;
}
int main(){
    funct();
    return 0;
}

1 个答案:

答案 0 :(得分:0)

试试这个

#include <iostream>
#include <cctype> //strlen, touper
#include <cstring>
using namespace std;
void funct(){
    int length = 50;
    char input[length];

    cout << "Sentence Capitalization Machine Mk.1.\n";
    cout << "Type a sentence for me to capitalize." << endl;
    cin.getline(input, length);
    cout << endl;

    input[0] = toupper(input[0]);
    int i=0;
    while (i++ < strlen(input)){
               if (input[i] == '.' && input[i+1] == ' ' &&  i+2<strlen(input)){
                input[ i + 2 ] = toupper(input[ i + 2 ]);
               }else if(input[i] == '.' &&  i+1<strlen(input)){
                   input[ i + 1 ] = toupper(input[ i + 1 ]);
               }
   };

cout << input << endl;
}
int main(){
    funct();
    return 0;
}