সি ++ কনসোল অ্যাপ্লিকেশনটি তাত্ক্ষণিকভাবে বন্ধ হওয়া থেকে কীভাবে বন্ধ করবেন?


193

ইদানীং, আমি এই ওয়েবসাইট থেকে সি ++ শিখার চেষ্টা করছি । দুর্ভাগ্যক্রমে আমি যখনই কোডের একটি নমুনা চালানোর চেষ্টা করি, তখন আমি সেই প্রোগ্রামটি প্রায় দেড় সেকেন্ডের জন্য খোলা দেখি এবং তারপরে অবিলম্বে বন্ধ হয়ে যায়। প্রোগ্রামটি অবিলম্বে বন্ধ হওয়ার কোনও উপায় আছে যাতে আমি আমার প্রচেষ্টার ফলগুলি দেখতে পারি?


5
আপনি কি এক্সিকিউটেবলকে ডাবল-ক্লিক করছেন? আপনি কি উইন্ডোজে কাজ করছেন? আপনি কমান্ড শেল থেকে কাজ করছেন না এবং কমান্ডগুলি টাইপ করতে চান যেমন আপনি কার্যকর করতে চান?
এসলট

8
@ এস লট: কারণ আপনি যদি নিজের আইডিইতে "গো" বোতামটি চাপেন তবে আপনাকে কোনও কনসোল দিয়ে বিরক্ত করার দরকার নেই।
বিলি ওনিল

4
আপনার কাছ থেকে একটি ভাল বই পাওয়া উচিত যা থেকে সি ++ শিখতে হবে। ওয়েবসাইটগুলি হ'ল ভাল সম্পদ, তবে একটি ভাল সূচক পাঠ্যের সাথে কোনও মিল নেই। এখানে সি ++ বইগুলির একটি চূড়ান্ত তালিকা রয়েছে: স্ট্যাকওভারফ্লো
প্রশ্নগুলি

6
@ বিলি যদি Go বাটন টিপলে অ্যাপটি শেষ হয়ে যায় তখন এটি বন্ধ হয়ে যায়, আপনি ভুল আইডিই ব্যবহার করছেন।

2
জিজ্ঞাসা এবং পূর্বে এখানে জবাব দিয়েছেন: stackoverflow.com/questions/902261/… , যদিও এটির একটি আরও ভাল শিরোনাম রয়েছে।
ডিএমকেকে --- প্রাক্তন মডারেটর বিড়ালছানা

উত্তর:


121

সম্পাদনা করুন: চার্লস বেইলি নীচের মন্তব্যে যথাযথভাবে উল্লেখ করেছেন, অক্ষরগুলি বাফার করা থাকলে এটি কাজ করবে না stdinএবং এর আশপাশে কাজ করার কোনও ভাল উপায় নেই। আপনি যদি সংযুক্ত ডিবাগার নিয়ে ছুটে চলেছেন তবে জন ডিবলিংয়ের প্রস্তাবিত সমাধান সম্ভবত আপনার সমস্যার সবচেয়ে পরিষ্কার সমাধান।

এটি বলেছিল, আমি এটি এখানে রেখে দেব এবং অন্য কেউ এটি দরকারী হিসাবে খুঁজে পাবে। বিকাশের সময় টেস্ট লেখার সময় আমি এটিকে হর্ট হ্যাক হিসাবে ব্যবহার করেছি।


আপনার mainফাংশন শেষে , আপনি কল করতে পারেনstd::getchar();

এটি থেকে একটি একক চরিত্র পাবেন stdin, এভাবে আপনাকে "চালিয়ে যেতে কোনও কী টিপুন" বাছাই করার আচরণ দেওয়া (যদি আপনি আসলে "কোনও কী চাপুন" বার্তা চান তবে আপনাকে নিজের একটি মুদ্রণ করতে হবে)।

আপনাকে করার প্রয়োজন #include <cstdio>জন্য getchar


15
getcharসমস্যাটি সমাধান করে না - বা কেবলমাত্র সীমাবদ্ধ পরিস্থিতিতে, অন্তত। এটি থেকে একটি stdinচরিত্র পড়ে , তবে স্টিডিনের পক্ষ থেকে ইতিমধ্যে অক্ষরগুলি অন্তর্ভুক্ত করা থাকলে আপনি কোনও প্রম্পট মুদ্রণ করেন কিনা তা বিবেচনা না করেই প্রোগ্রামটি চলবে।
সিবি বেইলি

1
@ চার্লস: একটি ভাল পয়েন্ট। \nআংশিক সমাধান না হওয়া অবধি অবহেলা করা তবে একের বেশি লাইন ইনপুট বাফার করাতে সহায়তা করবে না। ইনপুট স্ট্রিম থেকে সবকিছু সাফ করার কোনও স্ট্যান্ডার্ড সি ++ উপায় আমার জানা নেই। : - /
জেমস ম্যাকনেলিস

1
@ জেমস: ওল্ড, তবে কেমন std::cin.ignore(std::cin.rdbuf()->in_avail());? এখান থেকে পেয়েছি ।
GManNickG

1
একটি বিকল্প আমি দর্শন ব্যবহার std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');সঙ্গে #include <limits>
Xeo

5
দয়া করে এটি করবেন না। :( এটি করা আপনার প্রোগ্রামের ক্রিয়াকলাপের অংশ নয়
হালকা রেস অরবিট

138

আপনি যদি ভিজুয়াল স্টুডিও ব্যবহার করছেন এবং আপনি আইডিই থেকে কনসোল অ্যাপ্লিকেশন শুরু করছেন:

টিপে Ctrl-F5 (ডিবাগ ছাড়াই শুরু) আবেদন শুরু করা এবং কনসোল উইন্ডো খোলা রাখা পর্যন্ত আপনি যে কোনো একটি কি টিপুন হবে।


1
আইডিই থেকে কনসোল শুরু করছেন? আপনি কিভাবে এবং কেন করবেন?
কোডিবাগস্টাইন

1
দুর্দান্ত, এটি কাজ করেছে। কেন এটি ভিজ্যুয়াল স্টুডিওর ডিফল্ট আচরণ নয়?
লুমিনায়ার

আমিও ভেবেছিলাম যে এটি করার উপায় ছিল, আজ অবধি, যখন আমি একটি সাধারণ কনসোল প্রোগ্রাম তৈরি করি এবং উপরের পদ্ধতিটি কার্যকর হয়নি :(
কানসাইরোবট

1
ডিবাগিংয়ের সাথে এর কোনও সংস্করণ আছে কি ?
ভাগ্যবান 3 ই

109

জেমসের সমাধান সমস্ত প্ল্যাটফর্মের জন্য কাজ করে।

বিকল্প হিসাবে Windowsআপনি mainফাংশন থেকে ফিরে আসার ঠিক আগে নিম্নলিখিতটি যোগ করতে পারেন :

  system("pause");

এটি pauseকমান্ডটি চালিত করবে যা আপনি কী টিপুন এবং একটি দুর্দান্ত বার্তা প্রদর্শন না করা পর্যন্ত অপেক্ষা করেPress any key to continue . . .


2
এটি কোনও সমাধানের রুবে গোল্ডবার্গের পরিবর্তনের মতো শোনাচ্ছে।
ডেভ ভ্যান ডেন এ্যান্ডে

4
@ ডেভ ভ্যান ডেন এঁয়েডে: এটিও বেশ সাধারণ এবং দেবসিপিসিপিতে বয়লারপ্লেট কোডে স্ট্যান্ডার্ড। +1
বিলি ওনিল

4
@ ডেভিড অন্যদিকে এটি পরিষ্কার করে দিয়েছে যে এটি উদাহরণের জন্য একটি মাত্র একটি অজানা, যখন স্ট্যান্ড: গেটকে দুর্ঘটনাক্রমে বাস্তব কোডে ছেড়ে দেওয়া যেতে পারে।
মার্টিন বেকেট

2
এটি উইন্ডোজের পক্ষে উপযুক্ত বৈধ সমাধান valid আদর্শ না হলেও, এটি কাজ করে
thecoshman

সবচেয়ে সহজ, দ্রুত, সমাধান আমার যা প্রয়োজন কেবল
কোডি বাগস্টিন

83

আপনি যদি মাইক্রোসফ্টের ভিজ্যুয়াল সি ++ ২০১০ এক্সপ্রেস ব্যবহার করে থাকেন এবং প্রোগ্রামটি বন্ধ হয়ে যাওয়ার পরে কনসোলটি খোলা রাখার জন্য সিটিআরএল + এফ 5 কাজ করে না, তবে এই এমএসডিএন থ্রেডটি একবার দেখুন

সম্ভবত আপনার আইডিই একটি সিটিআরএল + এফ 5 রান করার পরে কনসোলটি বন্ধ করতে সেট করেছে; আসলে, ভিজ্যুয়াল সি ++ ২০১০ এর একটি "খালি প্রকল্প" ডিফল্টরূপে কনসোলটি বন্ধ করে দেয়। এটি পরিবর্তন করতে, মাইক্রোসফ্ট মডারেটরের পরামর্শ মতো করুন:

দয়া করে আপনার প্রকল্পের নামটি ডান ক্লিক করুন এবং সম্পত্তি পৃষ্ঠাতে যান, দয়া করে কনফিগারেশন বৈশিষ্ট্যগুলি -> লিংকার -> সিস্টেম প্রসারিত করুন, দয়া করে সাবসিস্টেম ড্রপডাউনতে কনসোল (/ সাবস্কিস্টেম: কনসোল) নির্বাচন করুন। কারণ, ডিফল্টরূপে, খালি প্রকল্পটি এটি নির্দিষ্ট করে না।


1
যদি এটি কনসোল অ্যাপ না হয়?
জেসি মরিচ

3
@ মিস্টারউন্ডারহিল এটি তখনই কাজ করবে যদি আপনি ডিবাগার ছাড়াই লঞ্চ করেন (Ctrl + F5)।
জোনাথন মি

একমাত্র নন-হ্যাক সমাধান হওয়া ছাড়াও মূল স্ট্যাক অবজেক্ট ডেস্ট্রাক্টরের প্রিন্টগুলি দেখার একমাত্র উপায় এটি।
পনিরোস

20

আমি সাধারণত main()বন্ধ হওয়া কোঁকড়া ধনুর্বন্ধনী উপর একটি ব্রেকপয়েন্ট রাখি । প্রোগ্রামটির শেষটি যখনই পৌঁছে যায় তখন ব্রেকআপপয়েন্টটি আঘাত হানে এবং আউটপুট দেখতে আপনি কনসোল উইন্ডোতে ALT-Tab করতে পারেন।


14

কেন আপনি কেবল উইন্ডোজ ব্যবহার করছেন তা যদি কনসোল থেকে প্রোগ্রাম চালাবেন না, অর্থাত্ cmd.exe থেকে প্রোগ্রামটি চালান। প্রোগ্রামটি শেষ হওয়ার পরে উইন্ডোটি খোলা থাকে।

[সম্পাদনা]: আমি যখন কেডিভেলফ 4 ব্যবহার করি তখন আইডিইয়ের নীচে একটি ট্যাবে বাশ (একটি লিনাক্স সিএলআই) চলার সম্পূর্ণরূপে নজরে আসে। আমি এই ধরণের পরিস্থিতিতে কি ব্যবহার করি।


3
কারণ আপনি যদি কোনও আইডিই ব্যবহার করেন তবে আপনি সাধারণত কনসোল ব্যবহার করেন না। আপনি গো চাপুন, প্রোগ্রামটি চলছে, এবং এটিই।
বিলি ওনিল

3
অ্যাপসটি শেষ হয়ে গেলে যে কোনও উপযুক্ত আইডিই কনসোলটি স্ক্রিনে রাখবে - কোড :: ব্লকগুলি উদাহরণস্বরূপ এটি করে।

3
@ নোবগজ: আমি এটি আবিষ্কার করেছি। উইন্ডোটি প্রায় আটকে রাখতে, আপনাকে লিঙ্কার কমান্ড লাইনে / সাবস্কিস্টম: কনসোল থাকতে হবে। ডকুমেন্টেশন বলে যে mainসংজ্ঞায়িত করা হলে এটি ডিফল্ট , তবে আমি কমান্ড লাইনে যদি এটি স্পষ্টভাবে সেট না করি তবে অ্যাপ্লিকেশনটি প্রস্থান করলে ভিএস উইন্ডোটিকে হত্যা করে। দীর্ঘশ্বাস
ফেলুন

2
@ জেমস: এটি প্রথম স্থানে একটি কনসোল উইন্ডো পেতে প্রয়োজন। এর পরিবর্তে উইনমাইন () এর পরিবর্তে প্রধান () প্রয়োজন, অন্যভাবে নয়। আমি কিছুটা হারিয়েছি ...
হ্যানস প্যাস্যান্ট

4
@ নোবগজ: আপনি যদি "উইন 32 কনসোল অ্যাপ্লিকেশন" এর পরিবর্তে কোনও "খালি প্রকল্প" থেকে শুরু করেন তবে সাবসিস্টেমটি স্পষ্টভাবে প্রকল্পের বৈশিষ্ট্যে সেট করা নেই। আপনি যদি mainপ্রকল্পটিতে সংজ্ঞায়িত করেন তবে লিংকটি ডিফল্টরূপে কনসোল সাবসিস্টেম ব্যবহার করে। ডিবাগিং বা চলমান অবস্থায়, আপনি একটি কনসোল উইন্ডো পাবেন। তবে, আপনি প্রকল্পের বৈশিষ্ট্যগুলিতে স্পষ্টভাবে সাবসোম হিসাবে কনসোলকে নির্দিষ্ট না করলে ভিজ্যুয়াল স্টুডিও কনসোল উইন্ডোটি উন্মুক্ত রাখবে না। আমি সবসময় একটি খালি প্রকল্প থেকে শুরু করি এবং আমি খুব কমই স্বতন্ত্র প্রকল্পের বৈশিষ্ট্যগুলি পরিবর্তন করি, তাই আমি কখনও কনসোল উইন্ডো স্টিকটি দেখিনি। বিভ্রান্তির জন্য দুঃখিত
জেমস ম্যাকনেলিস

9

আপনার কোড শেষ হওয়ার আগে এই লাইনটি প্রবেশ করান:

system("pause");

আপনি কোনও কী না চাপানো পর্যন্ত এটি কনসোলকে ধরে রাখবে।

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string s;
    cout << "Please enter your first name followed by a newline\n";
    cin >> s;
    cout << "Hello, " << s << '\n';
    system("pause"); // <----------------------------------
    return 0; // This return statement isn't necessary
}

এটি "মুদ্রণ অব্যাহত রাখতে কোনও কী টিপুন।" আমার জন্য.
পাপাহোটেলপাপা

8

cin.get();2 বার কল করুন :

    //...
    cin.get();
    cin.get();
    return 0
}

6
তবে দুবার কেন ??
মাধওয়া প্রিয়শান্থ

এর আগে অ্যারের অভ্যন্তরে কিছু স্ট্রিং পাওয়ার জন্য আমাদের যদি অন্য cin.get () প্রয়োজন? এটি এই পরিস্থিতিতে কাজ করে না।
কিউমাস্টার

4

আপনি যদি কোনও যোগ্য আইডিই, যেমন কোড :: ব্লকগুলি থেকে আপনার কোডটি চালান , আইডিই কোডটি চালানোর জন্য এটি ব্যবহার করে এমন কনসোল পরিচালনা করবে, যখন অ্যাপ্লিকেশনটি বন্ধ হয়ে যায় it কনসোলটি উন্মুক্ত রাখতে আপনি বিশেষ কোড যুক্ত করতে চান না, কারণ এটি আইডিইর বাইরে বাস্তবের জন্য ব্যবহার করার সময় এটি সঠিকভাবে কাজ করতে বাধা দেবে।


3

ঠিক আছে আমি অনুমান করছি আপনি উইন্ডোজে ভিজুয়াল স্টুডিও ব্যবহার করছেন ... কেন? ওয়েল কারণ আপনি যদি কোনও ধরণের লিনাক্স ওএসে থাকেন তবে আপনি সম্ভবত এটি কনসোল থেকে চালাচ্ছেন।

যাইহোক, আপনি অন্যদের পরামর্শ মতো আপনার প্রোগ্রামের শেষে বাজে যোগ করতে পারেন বা আপনি কেবল সিটিআরএল + এফ 5 চাপতে পারেন (ডিবাগিং ছাড়াই শুরু করুন) এবং ভিজুয়াল স্টুডিও কনসোলটি সম্পূর্ণ হওয়ার পরে ছেড়ে যাবে।

আপনি যদি ডিবাগ সংস্করণটি চালাতে চান এবং আপনার কোডটিতে ক্রেপ যোগ না করতে চান তবে অন্য বিকল্পটি হ'ল কনসোল উইন্ডোটি (স্টার্ট -> রান -> সেন্টিমিডি) খুলুন এবং আপনার ডিবাগ আউটপুট ডিরেক্টরিতে নেভিগেট করুন । তারপরে, কেবল আপনার এক্সিকিউটেবলের নাম লিখুন এবং এটি কনসোলে আপনার ডিবাগ প্রোগ্রামটি পরিচালনা করবে। তারপরে আপনি প্রসেসের জন্য ভিজ্যুয়াল স্টুডিওর সংযুক্তি বা কিছু করতে চান যদি আপনি সত্যিই চান।


3
#include "stdafx.h"
#include <iostream>
#include <conio.h>

using namespace std;

int main()
{

    cout << "Press any key to continue...";
    getch();

    return 0;
}

আমি অন্য কারও পোস্ট করার বিষয়টি খেয়াল করিনি তাই এখানে।


আমি এটি যুক্ত করব যে conio.hএটি একটি উইন্ডোজ নির্দিষ্ট শিরোলেখ এবং প্রতিটি মেশিনে উপলব্ধ নাও হতে পারে (বা আপনার এটি আলাদাভাবে লিঙ্ক করার প্রয়োজন হতে পারে যা একটি ওভারকিল)।
ইয়্যাকিসারভিনেন

কাজ। শুধু getch () পরিবর্তন করার প্রয়োজন; to _getch (); যেহেতু এটি
অবহেলিত হয়েছে

2

আপনি যদি ভিজ্যুয়াল সি ++ এ আসলে আপনার অ্যাপ্লিকেশনটি ডিবাগ করছেন, তবে সরঞ্জামদণ্ডে F5 বা সবুজ ত্রিভুজ টিপুন। আপনি যদি এটি সত্যিই ডিবাগিং না করে থাকেন (আপনার কোনও ব্রেকপয়েন্ট নেই), Ctrl + F5 টিপুন বা মেনুগুলিতে ডিবাগিং ছাড়াই শুরু নির্বাচন করুন (এটি সাধারণত ডিবাগ মেনুতে থাকে, যা আমি স্বীকার করি যে বিভ্রান্তিকর।) এটি কিছুটা দ্রুত হবে, এবং আরও গুরুত্বপূর্ণভাবে আপনার কাছে, আপনার কোডটি পরিবর্তন না করেই বিরতি দেওয়া হবে।

বিকল্পভাবে, একটি কমান্ড প্রম্পট খুলুন, আপনার উদাহরণটি যেখানে রয়েছে সেই ফোল্ডারে নেভিগেট করুন এবং নামটি লিখে এটি চালান। এইভাবে কমান্ড প্রম্পটটি চালানো শেষ হলে এটি বন্ধ হয় না এবং আপনি আউটপুট দেখতে পারেন। আমি এই দুটি পদ্ধতিতে কোড যুক্ত করার চেয়ে পছন্দ করি যা অ্যাপ্লিকেশনটির সমাপ্তির সাথে সাথে বন্ধ করে দেয়।


2

আপনার প্রোগ্রামের শেষে কেবল নিম্নলিখিতটি যুক্ত করুন। এটি ব্যবহারকারীর ইনপুটটির কিছু ফর্ম ক্যাপচার করার চেষ্টা করবে সুতরাং এটি কনসোলটি স্বয়ংক্রিয়ভাবে বন্ধ হওয়া থেকে বিরত থাকবে।

cin.get();

2

কোনো পূর্বে নিম্নলিখিত পংক্তিগুলি যোগ exit()ফাংশন বা কোন পূর্বে returnমধ্যে গুলি main():

std::cout << "Paused, press ENTER to continue." << std::endl;
cin.ignore(100000, "\n");

এটি আমার পক্ষে কাজ করে না, প্রথম লাইনটি কাজ করে তবে এন্টার
টিপানো

2

ভিজ্যুয়াল স্টুডিওর জন্য (এবং কেবলমাত্র ভিজ্যুয়াল স্টুডিও) নিম্নলিখিত কোড স্নিপেট আপনাকে একটি 'কীপ্রেস চালিয়ে যাওয়ার জন্য অপেক্ষা করুন' প্রম্পট দেয় যা প্রকৃতপক্ষে ইনপুট বাফারটি ফ্লাশ করে ব্যবহারকারী কোনও নতুন কী স্পষ্টভাবে চাপতে অপেক্ষা করে:

#include <cstdio>
#include <tchar.h>
#include <conio.h>

_tprintf(_T("Press a key to continue "));
while( _kbhit() /* defined in conio.h */ ) _gettch();
_gettch();

নোট করুন যে এটি tchar.hম্যাক্রোটিকে একাধিক 'অক্ষর সেটগুলির সাথে সামঞ্জস্য করতে ব্যবহার করে (যেমন ভিসি ++ এগুলি কল করে)।


2

আমি কেবল এটি করি:

//clear buffer, wait for input to close program
std::cin.clear(); std::cin.ignore(INT_MAX, '\n');
std::cin.get();
return 0;

দ্রষ্টব্য: সাইন বাফার এবং এই জাতীয় সাফাই কেবলমাত্র তখনই প্রয়োজন যদি আপনি আপনার প্রোগ্রামের আগে কোনও সময়ে সিন ব্যবহার করেছেন। এছাড়াও স্ট্যান্ড :: সংখ্যাসূচক_লিমিট :: সর্বাধিক () ব্যবহার করা INNMAMA এর চেয়ে সম্ভবত আরও ভাল তবে এটি কিছুটা শব্দযুক্ত এবং সাধারণত অপ্রয়োজনীয়।


এটি কাজ করে, তবে ফিরতি 0; আমি এই কোডটি ব্যবহার করলে কার্যকর করা হবে না।
ওয়ার্নসারব্যাচার

2

নীচে নীচের কোডটির মতো #include "stdafx.h"& ব্যবহার করুন system("pause");

#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
    std::cout << "hello programmer!\n\nEnter 2 numbers: ";
    int x, y;
    std::cin >> x >> y;
    int w = x*y;
    std::cout <<"\nyour answer is: "<< w << endl;
    system("pause");
}

systemঘোষণা করা হয় <cstdlib>, না stdafx.h
মেলম্পোনে

1

ইয়ে অনুরূপ ধারণা উত্তরের , কেবল সংক্ষিপ্ত বিকল্প।

নিম্নলিখিত বিষয়বস্তু সহ একটি ব্যাচ ফাইল তৈরি করুন:

helloworld.exe
pause

তারপরে ব্যাচের ফাইলটি ব্যবহার করুন।


1

কেবল

#include <cstdio>

    int main(){
        // code...
        std::getchar();
        std::getchar();
        return 0;
    }

কোনও কারণে আপনি যখন কোনও প্রোগ্রাম পরিচালনা করেন তখন স্টিডিনে ইতিমধ্যে গেচারের সাথে পড়ার জন্য সাধারণত 1 টি অক্ষর রয়েছে। সুতরাং প্রথম গেচার এই চরিত্রটি পড়েন, এবং দ্বিতীয় গেচার প্রোগ্রামটি থেকে বেরিয়ে আসার আগে ব্যবহারকারীর (আপনার) ইনপুটটির জন্য অপেক্ষা করে। এবং কোনও প্রোগ্রাম বেশিরভাগ টার্মিনালগুলি থেকে বেরিয়ে যাওয়ার পরে বিশেষত উইন্ডোজ ক্লোজ টার্মিনালে অবিলম্বে। সুতরাং আমরা কী লক্ষ্য রেখেছি তা হ'ল কোনও প্রোগ্রামকে সমস্ত কিছু আউটপুট করার পরে শেষ করতে বাধা দেওয়ার এক সহজ উপায়। অবশ্যই এটি সমাধানের জন্য আরও জটিল এবং পরিষ্কার উপায় রয়েছে তবে এটি সবচেয়ে সহজ।


2
এটি কেন সমস্যার সমাধান করে তার কমপক্ষে একটি সংক্ষিপ্ত ব্যাখ্যা যুক্ত করুন।
কেয়া 3

0

প্রোগ্রামটি শেষ হওয়ার পরে উইন্ডোটি উন্মুক্ত রাখতে আপনার আইডিইতে প্রকল্প সেটিংয়ে একটি চেকবক্স রয়েছে কিনা তা দেখুন। যদি তা না std::cin.get();হয় তবে মূল ফাংশনের শেষে একটি অক্ষর পড়তে ব্যবহার করুন । তবে, কেবলমাত্র লাইন-ভিত্তিক ইনপুট (স্ট্যান্ড :: গেটলাইন) ব্যবহার করা বা বামে অপঠিত অক্ষরগুলি মোকাবেলা করতে ভুলবেন না অন্যথায় (স্ট্যান্ড :: নতুন লাইন হওয়া পর্যন্ত উপেক্ষা করুন) অন্যথায়। অপঠিত


0

এটি ভাল কাজ করছে বলে মনে হচ্ছে:

cin.clear();
cin.ignore(2);

আপনি যদি প্রথমে বাফারটি সাফ করেন তবে আপনি পরেরটি পড়লে কোনও সমস্যা হবে না। কিছু কারণে cin.ignore(1)কাজ করে না, এটি 2 হতে হবে।


1
2 কখনও কখনও যথেষ্ট হয় না (যখন আরও কী স্ট্রোক সারিবদ্ধ থাকে)। সঠিক উপায়ে কাতারে যত অক্ষর রয়েছে তা উপেক্ষা করা। সাথে cin.rdbuf()->in_avail,। 1 বা 2 এর মতো কোনও ম্যাজিক নম্বর নয়
কনরাড রুডল্ফ

0

আপনি সর্বদা একটি ব্যাচ ফাইল তৈরি করতে পারেন। উদাহরণস্বরূপ, যদি আপনার প্রোগ্রামটিকে হেলিওরল্ড.এক্সএই বলা হয় তবে কিছু কোড হবে:

@echo off
:1
cls
call helloworld.exe
pause >nul
goto :1

0

আপনি যদি উইন্ডোজ চালনা করেন তবে আপনি করতে পারেন system("pause >nul");বা করতে পারেন system("pause");। এটি কোনও চাপ না দেওয়া পর্যন্ত প্রোগ্রামটি বিরতি দেওয়ার জন্য এটি একটি কনসোল কমান্ড কার্যকর করে। >nulএটা বলতে বাধা দেয় Press any key to continue...


0

আমি প্রোগ্রামটির শেষ রিটার্ন 0 এ একটি ব্রেকপয়েন্ট রাখছি। এটা ঠিক কাজ করে।


1
এটি প্রশ্নের উত্তর সরবরাহ করে না। কোনও লেখকের কাছ থেকে সমালোচনা বা স্পষ্টতার জন্য অনুরোধ জানাতে, তাদের পোস্টের নীচে একটি মন্তব্য দিন - আপনি সর্বদা আপনার নিজের পোস্টে মন্তব্য করতে পারেন, এবং আপনার যথেষ্ট সুনামের পরে আপনি কোনও পোস্টে মন্তব্য করতে সক্ষম হবেন ।
রবি ধোরিয়া ツ

1
কীভাবে এটি উত্তর সরবরাহ করে না? আমি ঠিক একই পরিস্থিতিতে একজন প্রশ্নের লেখকের মতো এবং এটি সাহায্য করে।
লিওরস্ক

0

আমি ব্যবহার করেছি cin.get()এবং এটি কাজ করা হয়েছে তবে cin.get([Array Variable])মাঝখানে ফাঁকা চরিত্রের সাথে একটি লিংয়ের স্ট্রিংটি ধরার জন্য এর আগে আমার আরেকটি ব্যবহার করা প্রয়োজন । সুতরাং cin.get()কমান্ড প্রম্পট উইন্ডোটি বন্ধ হওয়া থেকে এড়েনি। অবশেষে আমি অন্য উপায়টি পেয়েছি: একটি বাহ্যিক উইন্ডোতে খুলতে CTRL + F5 টিপুন এবং ভিজ্যুয়াল স্টুডিওর আর এটির নিয়ন্ত্রণ নেই। চূড়ান্ত কমান্ডগুলি চালুর পরে আপনাকে বন্ধ করার বিষয়ে আপনাকে জিজ্ঞাসা করবে।


0

আমি getchar()শেষে একটি ফাংশন রাখার চেষ্টা করেছি । তবে এটি কার্যকর হয়নি। সুতরাং আমি যা করেছি তা হল getchar()একের পর এক দুটি ফাংশন যুক্ত করা । আমি মনে করি সর্বশেষ ডেটা ইনপুট পরে প্রথমে আপনি চাপলে কীটি getchar()শোষণ করে Enter। সুতরাং getchar()একের পরিবর্তে দুটি ফাংশন যুক্ত করার চেষ্টা করুন


0

রান বোতাম টিপানোর পরিবর্তে, একই সময়ে সিটিআরএল এবং এফ 5 টিপুন, এটি আপনাকে বার্তাটি চালিয়ে যাওয়ার জন্য কোনও কী প্রদান করবে। অথবা টাইপ করুন "(এন্টিভাইরাসগুলি পছন্দ না করে প্রকৃত প্রোগ্রামগুলি পরীক্ষা না করার জন্য সতর্কতাটি এটি ব্যবহার করুন !!!!)" আপনার মূল ফাংশন শেষে কিন্তু: (সতর্কতা কেবল এন্টিভাইরাস ডন হিসাবে প্রকৃত প্রোগ্রামগুলি পরীক্ষা করার জন্য এটি ব্যবহার করে না ভালো লাগেনি !!!!)


0

রিটার্ন 0 এর ঠিক আগে cin.ignore () ব্যবহার করুন; দ্বিগুণ

main()
  {
  //your codes 

  cin.ignore();
  cin.ignore();

  return 0;
  }

এখানেই শেষ


আমি সাধারণত এইভাবে কিছু করি। cin.ignore (); cin.get ();
aj.toulan


-1

এমনকি আপনি নিজের শুরুতে একটি পূর্ণসংখ্যা ঘোষণা করতে পারেন main() ফাংশনের (বলুন int a;) এবং std::cin >> a;ফেরতের মানের ঠিক আগে রেখে দিতে পারেন। সুতরাং আপনি কী টিপুন এবং প্রবেশ না করা পর্যন্ত প্রোগ্রামটি চলতে থাকবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.