C++ 替换句子
编写一个程序,可以读入一个最多100个字符的句子,并输出空格正确的句子和大写字母正确的句子。换句话说,在输出语句中,两个或更多空格的所有字符串都应该压缩为一个空格。句子应以大写字母开头,但不应包含其他大写字母。不要担心专有名称;如果他们的第一个字母改为小写,这是可以接受的。将换行符视为空白,即换行符和任意数量的空白压缩为单个空白。假设句子以句号结尾,不包含其他句号。例如,输入 生命、宇宙和一切的答案是42 应产生以下输出: 生命、宇宙和一切的答案是42C++ 替换句子,c++,C++,编写一个程序,可以读入一个最多100个字符的句子,并输出空格正确的句子和大写字母正确的句子。换句话说,在输出语句中,两个或更多空格的所有字符串都应该压缩为一个空格。句子应以大写字母开头,但不应包含其他大写字母。不要担心专有名称;如果他们的第一个字母改为小写,这是可以接受的。将换行符视为空白,即换行符和任意数量的空白压缩为单个空白。假设句子以句号结尾,不包含其他句号。例如,输入 生命、宇宙和一切的答案是42 应产生以下输出: 生命、宇宙和一切的答案是42 #include<iostream&
#include<iostream>
#include<string>
using namespace std;
int main()
{
const int MAX = 100;
char sentence[MAX+1];
string replace = "";
int space = 0;
cout<<"Enter a sentence";
cin.getline(sentence,MAX+1);
int i =0;
while(i<MAX && sentence[i] != '\0' && sentence[i] != '.')
{
if(isspace(sentence[i]) || sentence[i] == '.')
{
space++;
}
else{
space = 0;
}
if(space < 2)
{
replace += tolower(sentence[i]);
}
}
if(replace.length()>0)
{
replace.at(0) = toupper(replace.at(0));
if(replace[replace.length()-1]=='' && replace.length()==1){
replace=replace;
}
else if(replace[replace.length()-1]=='')
{
replace[replace.length()-1]='.';
}
else if(replace.length()==MAX)
{
replace[MAX-1]='.';
}
else
{
replace+='.';
}
}
cout<<"The sentence to enter: "<<endl << sentence<<endl;
cout<<"How it should be: "<<replace<<endl;
return 0;
}
#包括
#包括
使用名称空间std;
int main()
{
常数int MAX=100;
字符句子[MAX+1];
字符串替换=”;
int空间=0;
库特
我不知道您想在这里做什么,但'
不是有效字符,是编译器错误的来源。我不知道您是否在查找空字符\0
或其他内容,但由于整个表达式导致替换=替换
,因此基本上不需要上述代码。
实际上,您没有收到关于'\O'
-的错误,并且您的代码没有'\O'
..它有'\0```(零而不是大Oh)。'\0
-C样式字符串的终止字符,其整数值为0;但是没有转义序列'\O'
此外,没有“空单字符”这样的东西,因此“
是没有意义的。在编写代码时,在描述您要检查的内容时,请尽量更加明确。例如,如果我要编写:
bool my_string_ends_with_a_period = (not my_string.empty()) and (my_string.back() == '.');
我说的是我在计算什么。你不必总是这么冗长,但现在你的代码有点凌乱,所以很难弄清楚你想做什么。空字符常量
应该是显而易见的。你不能通过将两个单引号背对背来获得空字符。如果允许使用std::string
为什么要使用字符句子[MAX+1];
std::string句子;
会是一个更好的选择。@drescherjm我应该用什么来代替空字符您需要从字符串中删除字符(并将字符串向左移动)不要尝试将空字符放入其中。\O
与\0
if(replace[replace.length()-1]=='' && replace.length()==1){
replace=replace;
}
bool my_string_ends_with_a_period = (not my_string.empty()) and (my_string.back() == '.');