从文件 c++ 中计算大写字母
Count capital letters from file c++
// C++ program to count the uppercase
#include<iostream>
#include<fstream>
#include <string>
using namespace std;
// Function to count uppercase
int Count ( string str )
{
int upper = 0;
for (int i = 0; i < str.length(); i++) {
if (str[i] >= 'A' && str[i] <= 'Z')
upper++;
}
return upper;
}
// Driver function
int main()
{
//Open the file
ifstream openedFile;
//This is how you turn the potential file into an actualized file inside the defualt directory.
openedFile.open ( "random words.txt" );
string str[10001]; int i = 0;
int uppercase = 0;
while (!openedFile.eof())
{
getline ( openedFile, str[i], '\n');
uppercase = Count(str[i]);
if (Count(str[i]) == 1) uppercase++;
if (Count(str[i]) == 3) uppercase++;
if (Count(str[i]) == 2) uppercase++;
cout << Count(str[i]) << "\n";
}
cout << "Uppercase letters: " << uppercase << endl;
//Close the file
openedFile.close ();
}
说明出现了大写字母。有时甚至连成一行 3 个。它不会添加到大写变量。
您将在下一次迭代中覆盖大写变量的值:uppercase = Count(str[i]);
。只需使用 +=
并删除那些 if (Count(str[i]) == X) uppercase++;
此外,根本不需要您只使用第一个条目的 1001 个字符串数组。您可以在 main.
中声明 string str
并将 str[i]
替换为 str
如果其他人可能正在搜索此线程的标题,这里是使用算法函数和流的解决方案。
#include <algorithm>
#include <iterator>
#include <iostream>
#include <cctype>
#include <fstream>
int main()
{
std::ifstream openedFile("random words.txt");
std::cout << "Uppercase letters: "
<< std::count_if(std::istream_iterator<char>(openedFile),
std::istream_iterator<char>(),
[](char ch)
{return std::isupper(static_cast<unsigned char>(ch));}
)
<< "\n";
}
使用 std::count_if 算法,可以读入文件,使用流迭代器并将读取的每个字符发送到 lambda 函数。
在lambda函数中,检查字符是否为大写。然后 std::count_if
将 return 计数。
// C++ program to count the uppercase
#include<iostream>
#include<fstream>
#include <string>
using namespace std;
// Function to count uppercase
int Count ( string str )
{
int upper = 0;
for (int i = 0; i < str.length(); i++) {
if (str[i] >= 'A' && str[i] <= 'Z')
upper++;
}
return upper;
}
// Driver function
int main()
{
//Open the file
ifstream openedFile;
//This is how you turn the potential file into an actualized file inside the defualt directory.
openedFile.open ( "random words.txt" );
string str[10001]; int i = 0;
int uppercase = 0;
while (!openedFile.eof())
{
getline ( openedFile, str[i], '\n');
uppercase = Count(str[i]);
if (Count(str[i]) == 1) uppercase++;
if (Count(str[i]) == 3) uppercase++;
if (Count(str[i]) == 2) uppercase++;
cout << Count(str[i]) << "\n";
}
cout << "Uppercase letters: " << uppercase << endl;
//Close the file
openedFile.close ();
}
说明出现了大写字母。有时甚至连成一行 3 个。它不会添加到大写变量。
您将在下一次迭代中覆盖大写变量的值:uppercase = Count(str[i]);
。只需使用 +=
并删除那些 if (Count(str[i]) == X) uppercase++;
此外,根本不需要您只使用第一个条目的 1001 个字符串数组。您可以在 main.
中声明string str
并将 str[i]
替换为 str
如果其他人可能正在搜索此线程的标题,这里是使用算法函数和流的解决方案。
#include <algorithm>
#include <iterator>
#include <iostream>
#include <cctype>
#include <fstream>
int main()
{
std::ifstream openedFile("random words.txt");
std::cout << "Uppercase letters: "
<< std::count_if(std::istream_iterator<char>(openedFile),
std::istream_iterator<char>(),
[](char ch)
{return std::isupper(static_cast<unsigned char>(ch));}
)
<< "\n";
}
使用 std::count_if 算法,可以读入文件,使用流迭代器并将读取的每个字符发送到 lambda 函数。
在lambda函数中,检查字符是否为大写。然后 std::count_if
将 return 计数。