উত্তর:
মূল উপায় হ'ল:
printf ("Here are the first 8 chars: %.8s\n", "A string that is more than 8 chars");
অন্যান্য, প্রায়শই অধিক দরকারী উপায় হ'ল:
printf ("Here are the first %d chars: %.*s\n", 8, 8, "A string that is more than 8 chars");
এখানে আপনি প্রিন্টফ () এর অন্তর্নির্মিত হিসাবে দৈর্ঘ্যটি নির্দিষ্ট করেছেন, যা আর্গুমেন্ট থেকে দৈর্ঘ্য পাওয়ার অনুরোধ হিসাবে ফর্ম্যাটে '*' কে বিবেচনা করে।
আপনি স্বরলিপিটিও ব্যবহার করতে পারেন:
printf ("Here are the first 8 chars: %*.*s\n",
8, 8, "A string that is more than 8 chars");
এটি "% 8.8s" স্বরলিখনের সাথেও সাদৃশ্যপূর্ণ তবে আবার রানটাইমে আপনাকে সর্বনিম্ন এবং সর্বাধিক দৈর্ঘ্য নির্দিষ্ট করতে দেয় - আরও বাস্তবের মতো দৃশ্যে:
printf("Data: %*.*s Other info: %d\n", minlen, maxlen, string, info);
printf()
এই প্রক্রিয়াগুলি সংজ্ঞায়িত করার জন্য পসিক্স স্পেসিফিকেশন ।
-
সম্পূর্ণ নির্দিষ্ট দৈর্ঘ্য পর্যন্ত এটি তৈরি করতে আউটপুটটি খালি প্যাডযুক্ত হবে (বামদিকে আপনি একটি যোগ না করে )।
printf ("Here are the first 8 chars: %.8s\n", "A string that is more than 8 chars");
% 8s ন্যূনতম 8 টি অক্ষরের প্রস্থ উল্লেখ করবে। আপনি 8 এ ছাঁটাই করতে চান, সুতরাং% .8 ব্যবহার করুন।
আপনি যদি সর্বদা 8 টি অক্ষর মুদ্রণ করতে চান তবে আপনি% 8.8 ব্যবহার করতে পারেন
একটি নির্দিষ্ট পরিমাণ অক্ষর নির্দিষ্ট করার পাশাপাশি আপনি ব্যবহার করতে পারেন *
যার অর্থ হল যে মুদ্রণটি আর্গুমেন্ট থেকে অক্ষরের সংখ্যা নেয়:
#include <stdio.h>
int main(int argc, char *argv[])
{
const char hello[] = "Hello world";
printf("message: '%.3s'\n", hello);
printf("message: '%.*s'\n", 3, hello);
printf("message: '%.*s'\n", 5, hello);
return 0;
}
ছাপে:
message: 'Hel'
message: 'Hel'
message: 'Hello'
ব্যবহার করে printf
আপনি করতে পারেন
printf("Here are the first 8 chars: %.8s\n", "A string that is more than 8 chars");
আপনি যদি সি ++ ব্যবহার করেন তবে আপনি এসটিএল ব্যবহার করে একই ফলাফল অর্জন করতে পারেন:
using namespace std; // for clarity
string s("A string that is more than 8 chars");
cout << "Here are the first 8 chars: ";
copy(s.begin(), s.begin() + 8, ostream_iterator<char>(cout));
cout << endl;
বা, কম দক্ষতার সাথে:
cout << "Here are the first 8 chars: " <<
string(s.begin(), s.begin() + 8) << endl;
ostream_iterator<char>(cout)
! পরিবর্তে, ব্যবহার করুন ostreambuf_iterator<char>(cout)
! পারফরম্যান্সের পার্থক্য বরং বড় হওয়া উচিত।
std::cout.write(s.data(), 8)
। বা আধুনিক সি ++ এ std::cout << std::string_view{s.data(), 8}
,।
প্রথম চারটি অক্ষর মুদ্রণ করুন:
printf("%.4s\n", "A string that is more than 8 chars");
আরও তথ্যের জন্য এই লিঙ্কটি দেখুন (চেক। সংজ্ঞা- বিভাগ)
সি ++ এ এটি সহজ।
std::copy(someStr.c_str(), someStr.c_str()+n, std::ostream_iterator<char>(std::cout, ""));
সম্পাদনা: স্ট্রিং পুনরাবৃত্তকারীগুলির সাথে এটি ব্যবহার করা আরও নিরাপদ, যাতে আপনি শেষের দিকে চলে না। আমি প্রিন্টফ এবং স্ট্রিং যা খুব সংক্ষিপ্ত সেগুলি দিয়ে কী ঘটে তা আমি নিশ্চিত নই, তবে আমার ধারণা এটি নিরাপদ।
std::cout << someStr.substr(0,8);
আরও বেশি স্পষ্ট।
সি ++ এ, আমি এটি এইভাবে করি:
char *buffer = "My house is nice";
string showMsgStr(buffer, buffer + 5);
std::cout << showMsgStr << std::endl;
দয়া করে মনে রাখবেন এটি নিরাপদ নয় কারণ দ্বিতীয় তর্কটি পাস করার সময় আমি স্ট্রিংয়ের আকারের বাইরে যেতে পারি এবং একটি মেমরি অ্যাক্সেস লঙ্ঘন তৈরি করতে পারি। এটি এড়াতে আপনাকে নিজের চেক প্রয়োগ করতে হবে।