大写每个句子中的第一个单词
Capitalizing the first word in each sentence
我需要制作一个程序,将每个句子的第一个字符都大写。例如,如果字符串参数为" hello。我的名字是乔。你叫什么名字?"该功能应操纵字符串,以便包含" Hello。我的名字是乔。你叫什么名字?"我不确定我在做什么错。有什么建议么?这是我的代码:
#include<iostream>
#include<cctype>
#include<cstdlib>
using namespace std;
void capitalize(char sentence[], int const SIZE);
int main()
{
const int SIZE = 1024;
char sentence[SIZE];
cout << "Enter a string: " << endl << endl;
cin.getline(sentence, SIZE);
capitalize(sentence, SIZE);
system("pause");
return(0);
}
void capitalize(char sentence[], int SIZE)
{
char *strPtr;
int count = 0;
sentence[0] = toupper(sentence[0]);
for (int i = 0; i < SIZE; i++)
{
strPtr = strstr(sentence[i], ".");
if (*strPtr == '.')
{
*strPtr = toupper(*strPtr);
}
}
while (sentence[count] != ' ')
{
cout << sentence[count];
count++;
}
}
#include <cstring> // need this for strstr()
void capitalize(char sentence[], int SIZE)
{
char *strPtr;
int count = 0;
sentence[0] = toupper(sentence[0]);
for (int i = 0; i < SIZE; i++)
{
strPtr = strstr(&sentence[i], ".");
//strPtr returns the pointer to
//the first occurence of "." after sentence[i]
if(strPtr==NULL) break;
if (*strPtr == '.')
{
// you really dont want to do this
//*strPtr = toupper(*strPtr);
// put the suitable code here and everything will work
}
}
//why the while loop? and count?
while (sentence[count] != ' ')
{
cout << sentence[count];
count++;
}
}
您正在做的是大写"。但是显然,您希望下一个角色大写。因此,您会自己写代码的一部分,因为您会发现它更有意义。
首先,如注释中所述,您不包括 cstring
。其次,您是在sentence[i]
上调用strstr
,这是char。您需要sentence + i
,这是一个char*。这将修复您的语法错误。
对于逻辑错误,看起来您正在尝试toupper
时期。
strPtr = strstr(sentence[i], ".");
应在i
(包含)开始的字符串中找到第一个阶段。然后,您检查strstr
是否找到了任何东西(如果没有找到任何东西。如果找到了序列,则 strPtr
,但是strPtr
仍然指向目标字符串的第一个字符,即'.'
。您应该寻找目标字符串". "
然后将一个超过一个句子的逐渐找到下一个句子的第一个字母。不幸的是,没有strstr
的安全方法,因为它不会告诉您它看起来很远,因此字符串可能以". "
和一个过去掉下数组的过去。您要么需要手动迭代阵列,寻找'.'
然后检查该数组,要么使用std::find
。
相关文章:
- 如何将行的第一个单词作为一个变量,将行的其余部分作为另一个变量进行归档/存储
- 当字符串中只有一个"GOOD"字符串可用时,从没有空格的字符串中提取第一个单词的最佳和有效方法?
- QT 创建器只会将第一个单词从文本编辑转换为纯文本
- 从文件的一行中查找数字的平均值,避免使用第一个单词
- 删除 C++ 中字符串中第一个单词之前的空格
- C 如何在字符串中大写每个句子/行的第一个单词
- 大写每个句子中的第一个单词
- 检查字符串中的第一个单词是否等于 "print"
- 字符串将第一个单词移动到字符串的末尾
- C++文件输出只接受第一个单词
- 获取字符串的第一个单词并从实际字符串中删除该单词
- 字符串:使用 strcmp 查找第一个单词是否重复
- 我的算法只是将第一个单词写入文件
- C ++将文本文件中的读取到向量中,<vector>然后根据内部向量中的第一个单词写入向量或数组
- string.length()在第一个单词后停止
- C++ "cin"只读第一个单词
- 获取字符'='之前的所有标准::字符串或第一个单词
- 检测重复的单词 C++,不检测第一个单词
- 在控制台中输入字符串时.然后只打印第一个单词
- 如何从字符串中删除第一个单词