আমি কেন একটি স্ট্রিং cout করতে পারি না?


143

আমি কেন এটি cout stringপছন্দ করতে পারি না :

string text ;
text = WordList[i].substr(0,20) ;
cout << "String is  : " << text << endl ;

যখন আমি এটি করি, আমি নিম্নলিখিত ত্রুটিটি পাই:

ত্রুটি 2 ত্রুটি C2679: বাইনারি '<<': কোনও অপারেটর পাওয়া যায়নি যা 'স্টাড :: স্ট্রিং' টাইপের ডান হাতের অপারেণ্ড নেয় (বা কোনও গ্রহণযোগ্য রূপান্তর নেই) সি: \ ব্যবহারকারী \ মোল্লাসাদ্রা \ নথি \ ভিজ্যুয়াল স্টুডিও ২০০\ \ প্রকল্পগুলি arn বার্নামেক \ বার্নামেক \ barnamec.cpp 67 বার্নামেক **

এটি আশ্চর্যজনক, এমনকি এটি কাজ করে না:

string text ;
text = "hello"  ;
cout << "String is  : " << text << endl ;

আপনি ত্রুটি বার্তায় সম্পাদনা করতে পারেন?
ট্রয়য়েন

1
তুমি কি করেছ #include <iostream>?
কোনারাক

পর্যাপ্ত তথ্য নয়। ত্রুটিটি কী
অ্যালেক্সড

আমি এটা করেছি। তবে আবারও আমার সমস্যা আছে।
আতা

আপনি পুরো ফাইল পোস্ট করতে পারেন? আমরা যদি একটি ফাংশন মধ্যে এই আহ্বান করছি জানি না, যদি আপনি সঠিক জিনিস, ইত্যাদি ... অন্তর্ভুক্ত
Konerak

উত্তর:


241

আপনাকে অন্তর্ভুক্ত করা দরকার

#include <string>
#include <iostream>

7
এবং এছাড়াও using namespace stdবা using std::cout; using std::endl;
ফারদজাদ

2
হ্যাঁ, তবে আমি অনুমান করি যে এটি অন্তর্ভুক্ত রয়েছে, কারণ string text;সম্পাদনা (যুক্ত ত্রুটি) তে কোনও ত্রুটি নেই বলেছে যে এটি সমস্যা নয় তবে অনুপস্থিত stringশিরোনাম।
কিরিল কিরভ

57
+1: ভিজ্যুয়াল সি ++ (<iostream> সহ) এর অনেকগুলি এসটিএল শিরোনাম std::basic_stringক্লাসের একটি সংজ্ঞা টানেন (কারণ এগুলি পরোক্ষভাবে প্রয়োগ-সংজ্ঞায়িত <xstring> শিরোলেখ অন্তর্ভুক্ত করে ( কখনও এটি সরাসরি অন্তর্ভুক্ত করবেন না )) "। এটি আপনাকে স্ট্রিং ক্লাসটি ব্যবহার করতে দেয়, প্রাসঙ্গিকটি operator<<<স্ট্রিং> শিরোনামে নিজেই সংজ্ঞায়িত করা হয়, সুতরাং আপনাকে অবশ্যই ম্যানুয়ালি অন্তর্ভুক্ত করতে হবে। std::basic_stringভিসি ++ এ অপ্রত্যক্ষভাবে কাজের সংজ্ঞা অন্তর্ভুক্ত করার জন্য অন্যান্য শিরোনামগুলির উপর নির্ভর করা , তবে এটি সমস্ত সংকলকগুলিতে কাজ করবে না।
সোভেন

6
সোভেন- আপনার মন্তব্য দুর্দান্ত! এই প্রশ্নকর্তার মতো আমারও একই সমস্যা ছিল, সংকলক বলেছিলেন অপারেটর >> স্ট্যান্ড :: সিন এবং স্টাড :: স্ট্রিংয়ের জন্য সংজ্ঞায়িত হয়নি। দেখা যাচ্ছে যে আমার কাছে <iostream> তবে ভুলে গিয়েছিল <স্ট্রিং>। আমি লিনাক্স ডাব্লু / জিসিসি তে কাজ করতে অভ্যস্ত যা অভিযোগ করেছিল যে স্টাড :: স্ট্রিং সংজ্ঞায়িত নয়। আমরা পরিবর্তে অপারেটর সম্পর্কে অভিযোগ কেন পেয়েছি তা আপনার মন্তব্য পুরোপুরি ব্যাখ্যা করে। ধন্যবাদ !!
ড্যানিয়েল গোল্ডফার্ব

2
এইটা কাজ করে. আমি আমার কোডে # অন্তর্ভুক্ত <স্ট্রিং> লাইনটি মিস করেছি। ধন্যবাদ।
হাও

11

আপনাকে stdকোনওভাবেই চাউলের ​​নাম স্থানটি উল্লেখ করতে হবে । উদাহরণস্বরূপ, .োকান

using std::cout;
using std::endl;

আপনার ফাংশন সংজ্ঞা বা ফাইল শীর্ষে।


6

আপনার কোড নিয়ে বেশ কয়েকটি সমস্যা রয়েছে:

  1. WordListকোথাও সংজ্ঞায়িত করা হয় না। এটি ব্যবহার করার আগে আপনাকে এটি সংজ্ঞায়িত করা উচিত।
  2. আপনি এই জাতীয় কোনও ফাংশনের বাইরে কেবল কোড লিখতে পারবেন না। আপনার এটি কোনও ফাংশনে রাখা দরকার।
  3. #include <string>স্ট্রিং ক্লাস এবং আইওস্ট্রিম ব্যবহার করার আগে আপনি ব্যবহার করার আগে coutবা আপনার ব্যবহার করা উচিত endl
  4. string, coutএবং নেমস্পেসে endlলাইভ থাকুন std, যাতে আপনি এগুলিকে প্রথমে সুযোগে আনার std::জন্য usingনির্দেশ না ব্যবহার করে আপনি সেগুলি পূর্বনির্ধারিত না করে অ্যাক্সেস করতে পারবেন না ।

তাদের মধ্যে কেউই আমার পক্ষে কাজ করেনি বলে মনে হয় সমস্যাটি সাবস্ট্রাস্টারে রয়েছে
আতা

1

উপরের উত্তরগুলি ভাল তবে আপনি স্ট্রিং যুক্ত করতে না চাইলে আপনি নিম্নলিখিতটি ব্যবহার করতে পারেন

ostream& operator<<(ostream& os, string& msg)
{
os<<msg.c_str();

return os;
}

0

St_ :: স্ট্রিংকে কনস্ট চরে রূপান্তর করতে c_str () ব্যবহার করুন।

cout << "String is  : " << text.c_str() << endl ;

-1

আপনাকে রেফারেন্স std::coutবা std::endlস্পষ্টভাবে বলতে হবে না ।
তারা উভয় মধ্যে অন্তর্ভুক্ত করা হয় namespace stdusing namespace stdস্কোপ রেজোলিউশন অপারেটরটির পরিবর্তে ::প্রতিবার তৈরি করা সহজ এবং পরিষ্কার।

#include<iostream>
#include<string>
using namespace std;

5
স্ট্যাকওভারফ্লোতে আপনাকে স্বাগতম, আপনি হয়ত খেয়াল করেননি তবে গৃহীত উত্তরের একটি মন্তব্যে এটি সম্বোধন করা হয়েছিল।
অ্যান্ডন এম কোলেম্যান

-3

আপনি যদি লিনাক্স সিস্টেম ব্যবহার করেন তবে আপনাকে যুক্ত করতে হবে

using namespace std;

শিরোনাম নীচে

উইন্ডোজ যদি নিশ্চিত হয় যে আপনি শিরোনাম সঠিকভাবে রেখেছেন #include<iostream.h>

#include<string.h>

এটিকে নিখুঁতভাবে কাজ করুন।

#include <iostream>
#include <string>

int main ()
{
std::string str="We think in generalities, but we live in details.";
                                       // (quoting Alfred N. Whitehead)

  std::string str2 = str.substr (3,5);     // "think"

   std::size_t pos = str.find("live");      // position of "live" in str

  std::string str3 = str.substr (pos);     
// get from "live" to the end

  std::cout << str2 << ' ' << str3 << '\n';

  return 0;
}

using namespace std;টার্গেট ওএস হওয়ার সাথে কিছু করার নেই linux। একইভাবে, .hঅন্তর্ভুক্তগুলিতে যোগ করার লক্ষ্যমাত্রা ওএস উইন্ডোজ হওয়ার সাথে কিছুই করার নেই, #include <iostream>এবং #include <string>উইন্ডোতে কাজ করবে।
স্ট্যাটিকবিগল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.