1.最简单
std::string sentence;
std::getline(std::cin, sentence);
for (int i = 0; i < sentence.length(); ++i)
2.引用声明
例题
首字母变大写
题目描述
输入一个只包含大小写英文字母和空格的句子,将每个单词的第一个字母改成大写字母。
输入描述
输入一个长度不超过100的英文句子。
输出描述
请输出按照要求改写后的英文句子。
输入样例
i like ACM
输出样例
I Like ACM
#include <iostream>
#include <cctype> // 包含ctype头文件
using namespace std;
int main() {
string sentence;
getline(cin, sentence); // 读取整行输入
// 设置一个标志,表示下一个字母是一个单词的第一个字母
bool capitalizeNext = true;
// 遍历输入的每个字符
for (char& ch : sentence) {
// 如果字符是字母
if (isalpha(ch)) {
// 如果是单词的第一个字母,将其改为大写
if (capitalizeNext) {
ch = toupper(ch);
capitalizeNext = false; // 设置标志为false,表示下一个字母不是一个单词的第一个字母
} else {
ch = tolower(ch); // 否则将其改为小写
}
} else if (isspace(ch)) {
capitalizeNext = true; // 如果是空格,设置标志为true,表示下一个字母是一个单词的第一个字母
}
}
// 输出改写后的英文句子
cout << sentence << endl;
return 0;
}
char& ch
是一个引用声明,用于在范围for
循环中遍历字符串中的每个字符。在这里,ch
是对 sentence
字符串中每个字符的引用。这样声明的好处是,你可以通过 ch
直接修改原始字符串中的字符。
具体来说,char& ch
表示 ch
是 char
类型的引用。在每次循环迭代时,ch
引用的是 sentence
中的当前字符。因此,通过修改 ch
,你实际上就在修改 sentence
中对应位置的字符。
这使得在循环内部修改字符串的操作更加方便。在此例中,我们通过引用 ch
直接修改了字符串中的每个字符的大小写。