为什么在"{"之前不允许函数定义?



我们的任务是编写一个

  • 显示输入的字符串
  • 计算字符串中的字符数
  • 计算字符串中元音的数量
  • 计算字符串中辅音的数量
  • 将字符串转换为大写
  • 将字符串转换为小写
  • 比较两个字符串并组合两个字符串

现在,我面临一个问题,每次我尝试运行程序时,都会收到一个错误,说在{标记之前这里不允许函数定义,而在输入结束时错误预期为}

以下代码:

#include <cstring>
#include <string>
#include <iostream>
#include <stdio.h>
using namespace std;
void Display_Inputted_Strings()
{
string str1,str2;

cin >> str1;
cin >> str2; 
cout << str1 << endl;
cout << str2 << endl;

return;
}
void The_Number_Of_Character()
{
char str1[10];
cout << "Input you're First String: ";
cin >> str1;
char str2[10];
cout << "Input you're Second String: ";
cin >> str2;
cout << "Lenght of string 1: " << strlen(str1) << endl; 
cout << "Lenght of string 2: " << strlen(str2) << endl; 
}
void The_Number_Of_Vowels()
{       
bool isVowel(char ch)
{
{   
ch = toupper(ch);
return (ch=='A' || ch=='E' || ch=='I' ||
ch=='O' || ch=='U');
}
}
}
int countVowels(int str)
{
int isVowel;
int count = 0;
for (int i=0; i<str.length(); i++)
if (isVowel(str[i]))
++count;
return count;

int str;
cout << "Enter a string: ";
cin >> str;

cout << "There are " << countVowels(str) << " Vowels in this string" << endl;
return 0;
}
void The_Number_Of_Consonants()
{
bool isConsonant(char ch)
{
ch = toupper(ch);

return !(ch == 'A' || ch == 'E' ||
ch == 'I' || ch == 'O' ||
ch == 'U') && ch >= 65 && ch <= 90;
}

int totalConsonants(string str)
{
int count = 0;
for (int i = 0; i < str.length(); i++)


if (isConsonant(str[i]))
++count;
return count;
string str;
cout << "Enter a string: ";
cin >> str;

cout << "There are a total of " << totalConsonants(str) << " Consonant";

}
}
void Convert_Strings_To_Uppercase()
{
void convert(string & s1)
{
for(int i = 0; i<s1.length(); i++)
{
s1[i] = toupper(s1[i]);
}
}
{
string s1;
cout << "Enter a string: " << endl;
getline(cin, s1);
convert(s1);
cout << s1 << endl;
return 0;
}
}
void Convert_Strings_To_Lowercase()
{
void convert(string & s1)
{
for(int i = 0; i<s1.length(); i++)
{
s1[i] = tolower(s1[i]);
}
}
{
string s1;
cout << "Enter a string: " << endl;
getline(cin, s1);
convert(s1);
cout << s1 << endl;
return 0;
}
}
void Compare_Two_Strings()
{
{
char str1[10] = "String";
char str2[10] = "Strings";

int result;
result=strcmp(str1,str2);
if(result==0)
cout << "String are equal" << endl;
else
cout << "String are not equal" << endl;

return 0;
}
}
void Combine_Two_Strings()
{
{
string s1, s2, result;

cout << "Enter string s1: ";
getline(cin,s1);
cout << "Enter string s2: ";
getline(cin,s2);

result = s1+s2;

cout << result << endl;

return 0;
}
}
void Input_String()
{
string str1;
cout << "Input a String: ";
cin >> str1; 
cout << "The String You Inputted: " << str1;
}
void Exit_Program()
{
cout << "Thank You.n";
}
int main()
{
int str1,str2;
{
cout << "Input Two Strings: ";
getline(cin, str1);
getline(cin, str2)
}


int selected
do
{
std::cout << "A.(0) Display Inputted Stringsn";
std::cout << "B.(1) Count the number of characters in the string(s)n";
std::cout << "C.(2) Count the number of vowels in the string(s)n";
std::cout << "D.(3) Count the number of consonants in the string(s)n";
std::cout << "E.(4) Convert the string(s) to uppercasen";
std::cout << "F.(5) Convert the string(s) to lowercasen";
std::cout << "G.(6) Compare the two stringsn";
std::cout << "H.(7) Combine the two stringsn";
std::cout << "I.(8) Input anothern";
std::cout << "J.(9) Exit Programn";

std::cin >> selected;

switch (selected)
{
case 0:
Display_Inputted_Strings();
break;
case 1:
The_Number_Of_Character();
break;
case 2:
The_Number_Of_Vowels();
break;
case 3:
The_Number_Of_Consonants();
break;
case 4:
Convert_Strings_To_Uppercase();
break;
case 5:
Convert_Strings_To_Lowercase();
break;
case 6:
Compare_Two_Strings();
break;
case 7:
Combine_Two_Strings();
break;
case 8:
Input_String();
break;
case 9:
Exit_Program();
break;
default:
std::cout << "You have entered an invalid optionn";
}
}  while (selected != 9);
}
}

您可能是从Python等其他语言的世界来到C++世界的。不允许在C++中的另一个函数中定义嵌套函数。但是,您可以定义一个具有相同语义的lambda。例如:

void Convert_Strings_To_Lowercase()
{
auto convert = [](string & s1)
{
for(int i = 0; i<s1.length(); i++)
{
s1[i] = tolower(s1[i]);
}
};
{
string s1;
cout << "Enter a string: " << endl;
getline(cin, s1);
convert(s1);
cout << s1 << endl;
}
}

附言:我刚刚把你的函数转换成了可编译的东西,没有检查代码是否有任何意义。例如,我删除了return 0;语句,因为您的函数具有void返回类型。

最新更新