আপনি ফাইল পড়া হয় বাইনারি বা টেক্সট মোড? ইন টেক্সট মোড যুগল গাড়ি ফেরত / লাইন ফিড, CRLF , যেমন ব্যাখ্যা করা হয় টেক্সট লাইনের শেষে, অথবা লাইন চরিত্র শেষে, কিন্তু বাইনারি আপনি শুধুমাত্র আনা এক একটি সময়ে বাইট, যার মানে যে হয় চরিত্র নয়অন্য বাইট হিসাবে আনার জন্য উপেক্ষা করে বাফারে রেখে দেওয়া হবে! ক্যারেজ রিটার্নের অর্থ, টাইপরাইটারে, টাইপ রাইটার গাড়িটি, যেখানে মুদ্রণ বাহুটি পড়ে আছে, কাগজের ডান প্রান্তে পৌঁছে বাম প্রান্তে ফিরে আসে is এটি একটি খুব যান্ত্রিক মডেল, যান্ত্রিক টাইপরাইটার এর। তারপরে লাইন ফিডের অর্থ হল যে কাগজ রোলটি খানিকটা উপরে আবর্তিত হবে যাতে কাগজ টাইপিংয়ের আরেকটি লাইন শুরু করার অবস্থানে থাকে। যত তাড়াতাড়ি আমার মনে আছে এএসসিআইআই-র মধ্যে একটি স্বল্প সংখ্যার অর্থ টাইপ না করে ডান এক চরিত্রে সরে যাওয়া, মৃত চর এবং অবশ্যই \ বি অর্থ ব্যাকস্পেস: গাড়িটিকে একটি অক্ষর পিছনে সরিয়ে নেওয়া। এইভাবে আপনি বিশেষ প্রভাব যুক্ত করতে পারেন, যেমন অন্তর্নিহিত (টাইপ আন্ডারস্কোর), স্ট্রাইকথ্রু (টাইপ বিয়োগ), আনুমানিক বিভিন্ন উচ্চারণ, প্রসারিত কীবোর্ডের প্রয়োজন ছাড়াই বাতিল (এক্স টাইপ), লাইন ফিডে প্রবেশের আগে কেবল লাইন বরাবর গাড়ির অবস্থান সামঞ্জস্য করে। সুতরাং আপনি কম্পিউটার না করে কোনও টাইপরাইটারকে স্বয়ংক্রিয়ভাবে নিয়ন্ত্রণ করতে বাইট মাপের এএসসিআইআই ভোল্টেজ ব্যবহার করতে পারেন। স্বয়ংক্রিয় টাইপরাইটার চালু করা হলে,অটোম্যাটিক মানে এই যে আপনি একবার কাগজের সর্বাধিক প্রান্তে পৌঁছালে গাড়িটি বাম দিকে ফিরে আসবে এবং লাইন ফিড প্রয়োগ করা হবে, অর্থাৎ রোলটি উপরে উঠে যাওয়ার সাথে সাথে গাড়িটি স্বয়ংক্রিয়ভাবে ফিরে আসবে বলে মনে করা হচ্ছে! সুতরাং আপনার উভয় নিয়ন্ত্রণ অক্ষর, কেবল একটি, \ n, নতুন লাইন বা লাইন ফিডের প্রয়োজন নেই।
প্রোগ্রামিংয়ের সাথে এর কোনও যোগসূত্র নেই তবে এএসসিআইআই এর বয়স বেশি এবং তিনি! দেখে মনে হচ্ছে কিছু লোকেরা যখন পাঠ্য কাজ করা শুরু করেছিল তখন তারা চিন্তা করছিল না! ইউএনআইএক্স প্ল্যাটফর্ম একটি বৈদ্যুতিক স্বয়ংক্রিয় টাইপম্যাচিন ধরে নেয়; উইন্ডোজ মডেলটি আরও সম্পূর্ণ এবং যান্ত্রিক মেশিনগুলির নিয়ন্ত্রণের জন্য অনুমতি দেয়, যদিও কিছু কন্ট্রোল অক্ষর কম্পিউটারে বেল চরিত্রের মতো কমপক্ষে দরকারী হয়ে ওঠে, যদি আমি ভালভাবে মনে করি তবে ... কিছু ভুলে যাওয়া পাঠ্য অবশ্যই মূল কন্ট্রোল ক্যারেক্টারের সাহায্যে ধরা পড়েছিল বৈদ্যুতিক নিয়ন্ত্রিত টাইপরাইটারগুলির জন্য এবং এটি মডেলকে স্থায়ী করে ...
প্রকৃতপক্ষে সঠিক প্রকরণটি হ'ল কেবলমাত্র \ r, লাইন ফিড অন্তর্ভুক্ত করা, গাড়ীর ফিরে আসা অপ্রয়োজনীয়, অর্থাৎ স্বয়ংক্রিয়, তাই:
char c;
ifstream is;
is.open("",ios::binary);
...
is.getline(buffer, bufsize, '\r');
if ((c=is.get())!='\n') is.rdbuf()->sputbackc(c);
...
সব ধরণের ফাইল হ্যান্ডেল করার সবচেয়ে সঠিক উপায় হবে। নোট তবে যে \ n টেক্সট মোড আসলে বাইট যুগল 0x0d 0x0a, কিন্তু 0x0d IS শুধু পান \ r: \ n \ দ অন্তর্ভুক্ত টেক্সট মোড কিন্তু না বাইনারি , তাই \ N এবং \ r \ N হয় সমতুল্য ... অথবা হতে হবে. এটি আসলে খুব বেসিক শিল্প বিভ্রান্তি, সাধারণ শিল্প জড়তা, কারণ কনভেনশনটি সমস্ত প্ল্যাটফর্মে সিআরএলএফের কথা বলতে হয়, তারপরে বিভিন্ন বাইনারি ব্যাখ্যায় পড়ে যায়। কঠোরভাবে বলতে সহ, ফাইল কেবলমাত্র হচ্ছে \ N (CRLF বা লাইন ফিড) হিসেবে 0x0d (গাড়ি ফেরত), মধ্যে বিকৃত হয়েছে করছে টেক্সটমোড (টাইপরাইটার মেশিন: কেবল গাড়িটি ফিরিয়ে দিন এবং স্ট্রাইকথ্রু সবকিছু ...), এবং এটি একটি নন-লাইন ভিত্তিক বাইনারি ফর্ম্যাট (হয় \ r বা \ r \ n অর্থ লাইনমুখী) যাতে আপনি পাঠ্য হিসাবে পড়েন না! কোডটি অবশ্যই কিছু ব্যবহারকারীর বার্তার সাথে ব্যর্থ হওয়া উচিত। এটি কেবল ওএসের উপর নির্ভর করে না, তবে সি লাইব্রেরি বাস্তবায়নের উপরও বিভ্রান্তি এবং সম্ভাব্য প্রকরণগুলিকে যুক্ত করে ... (বিশেষত স্বচ্ছ ইউনিকোড অনুবাদ অনুবাদ স্তরগুলির জন্য বিভ্রান্তিকর পরিবর্তনের জন্য বক্তব্যকে আরও একটি পয়েন্ট যুক্ত করে)।
পূর্ববর্তী কোড স্নিপেট (যান্ত্রিক টাইপরাইটার) এর সাথে সমস্যাটি হ'ল very r (স্বয়ংক্রিয় টাইপরাইটার পাঠ্য) পরে কোনও characters n অক্ষর না থাকলে এটি খুব অদক্ষ। তারপরে এটি BINARY মোডও ধরে নেয় যেখানে সি লাইব্রেরি পাঠ্য ব্যাখ্যা (লোকেল) উপেক্ষা করে নিখুঁত বাইটগুলি দিতে বাধ্য হয়। সেখানে উভয় মোড মধ্যে প্রকৃত টেক্সট অক্ষর কোন পার্থক্য কেবল নিয়ন্ত্রণ অক্ষর হওয়া উচিত, তাই সাধারণত পড়া ভাষী বাইনারি বেশী ভালো টেক্সট মোড। এই সমাধানটি বিনের জন্য কার্যকরমোড সাধারণ উইন্ডোজ ওএস পাঠ্য ফাইলগুলি স্বাধীনভাবে সি লাইব্রেরির বিভিন্নতার পরিবর্তিত, এবং অন্যান্য প্ল্যাটফর্মের পাঠ্য বিন্যাসগুলির (অক্ষরে ওয়েব অনুবাদ সহ) অক্ষম। যদি আপনি দক্ষতার বিষয়ে যত্নশীল হন, যাওয়ার উপায়টি হল কোনও ফাংশন পয়েন্টার ব্যবহার করা, vs r বনাম \ r \ n লাইন নিয়ন্ত্রণের জন্য আপনার পছন্দ মতো উপায় পরীক্ষা করা, তবে পয়েন্টারে সেরা গেটলাইন ব্যবহারকারী-কোডটি নির্বাচন করুন এবং এটি থেকে অনুরোধ করুন এটা।
ঘটনাক্রমে আমার মনে আছে আমি কিছু \ r \ r \ n টেক্সট ফাইলও পেয়েছি ... যা কিছু মুদ্রিত পাঠ্য গ্রাহকরা এখনও প্রয়োজনীয়ভাবে ডাবল লাইনের পাঠ্যে অনুবাদ করে।