اذهب إلى المحتوى

السؤال

نشر

لدي متغير من نوع std::string ويحتوي على بعض الكلمات الإنجليزية كالتالي:

std::string str = "HELLO, WORLD";

كيف يمكنني تحويل هذا النص إلى أحرف صغيرة Lower case؟ في لغات أخرى مثل JavaScript يمكنني أن أستخدم التابع toLower ولكن كيف أقوم بهذا الأمر في ++C؟

Recommended Posts

  • 1
نشر

يمكنك أن تقوم بهذا الأمر من خلال الدالة std::transform، على النحو التالي:

#include <algorithm>
#include <string>
#include <iostream>

int main() {
    std::string str = "HELLO, WORLD";
    std::transform(data.begin(), data.end(), data.begin(),
        [](unsigned char c) { return std::tolower(c); });
  
    std::cout << str;  // hello, world
}

بهذا الشكل سوف يتم تغير محتوى المتغير str إلى أحرف صغيرة.

ويمكنك أيضًا أن تستخدم التابع to_lower من مكتبة boost بشكل أسهل، كالتالي:

#include <boost/algorithm/string.hpp>
#include <iostream>
  
std::string str = "HELLO, WORLD";
boost::algorithm::to_lower(str);
std::cout << str;	// hello, wolrd

 

  • 0
نشر (معدل)

فرق قيمة ASCII بين الأحرف الكبيرة والصغيرة هو 32. على سبيل المثال، قيمة ASCII للحرف "B" هي 66 وقيمة ASCII للحرف "b" هي 98.
برنامج لتحويل الأحرف الكبيرة إلى أحرف صغيرة:

#include <iostream>
using namespace std;
int main()
{
	char c;
  	// إدخال حرف مكتوب بالحالة الكبيرة
	cout<<"Enter a character in uppercase: "; 
    cin>>c; // إدخال محرف
    // تحويله من حرف صغير إلى كبير عبر إضافة 32
	c=c+32;
	cout<<"Entered character in lowercase: "<<c;
	return 0;
}
/*
Enter a character in uppercase: A
Entered character in lowercase: a
*/

التحويل من أحرف صغيرة إلى كبيرة (سنطرح):

#include <iostream>
using namespace std;
int main()
{
	char c;
	cout<<"Enter a character in lowercase: "; 
    	cin>>c; 
	c=c-32;
	cout<<"Entered character in lowercase: "<<c;
	return 0;
}
/*
Enter a character in lowercase: a
Entered character in lowercase: A  
*/

برنامج لتحويل سلسلة من المحارف الكبيرة إلى صغيرة(يمكن أن تكون السلسلة بأحرف كبيرة أو مختلطة) وسنعتمد نفس المبدأ السابق:

#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int main()
{
   // تعريف مصفوفة محارف لتخزين السلسلة
   char str[50];
   int i;
   // إدخال السلسلة
   cout<<"Enter the String in uppercase: "; 
   // تخزين السلسلة في مصفوفة المحارف
   cin>>str;
   // حلقة لتحويل كل حرف كبير إلى صغير 
   for(i=0;i<=strlen(str);i++) { 
      // قيم الآسكي للأحرف الكبيرة تتراوح بين 65 و 92 
      // وبالتالي نحن نريد تحويل الأحرف الكبيرة فقط إلى صغيرة
      // أي أن هذا الشرط لتجنب تعديل الأحرف الصغيرة
      if(str[i]>=65 && str[i]<=92)
      {
	  str[i]=str[i]+32;
      }
   }
   cout<<"The entered string in lowercase: "<<str;
   return 0;
}
/*
Enter the String in uppercase: Hello
The entered string in lowercase: hello
*/

التحويل المعاكس:

#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int main()
{
   char str[50];
   int i;
   cout<<"Enter the String in lowercase: "; 
   cin>>str;
   for(i=0;i<=strlen(str);i++) { 
      if(str[i]>=92)
      {
	  str[i]=str[i]-32;
      }
   }
   cout<<"The entered string in uppercase: "<<str;
   return 0;
}
/*
Enter the String in lowercase: hello
The entered string in uppercase: HELLO
*/

 

تم التعديل في بواسطة Ali Haidar Ahmad

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...