আমি স্ট্রিং স্ট্রিম থেকে সি ++ এ স্ট্রিংয়ে কীভাবে রূপান্তর করব?


124

আমি কিভাবে থেকে রূপান্তর করবেন std::stringstreamকরতে std::stringC ++?

স্ট্রিং স্ট্রিমে কি আমাকে কোনও পদ্ধতি কল করার দরকার আছে?


4
আপনি কি আপনার পূর্ববর্তী প্রশ্নের উত্তরগুলি পড়েছেন, যা এটি কভার করেছে?

উত্তর:



74

.Str () - পদ্ধতিটি ব্যবহার করুন :

অন্তর্নিহিত স্ট্রিং অবজেক্টের সামগ্রীগুলি পরিচালনা করে।

1) কল করে যেমন অন্তর্নিহিত স্ট্রিংয়ের একটি অনুলিপি ফেরত দেয় rdbuf()->str()

2) অন্তর্নিহিত স্ট্রিংয়ের সামগ্রীগুলি প্রতিস্থাপন করে যেন কল করে rdbuf()->str(new_str)...

মন্তব্য

The copy of the underlying string returned by str is a temporary object that will be destructed at the end of the expression, so directly calling c_str() on the result of str() (for example in auto *ptr = out.str().c_str();) results in a dangling pointer...


14

std::stringstream::str() আপনি খুঁজছেন পদ্ধতি হয়।

সহ std::stringstream:

template <class T>
std::string YourClass::NumericToString(const T & NumericValue)
{
    std::stringstream ss;
    ss << NumericValue;
    return ss.str();
}

std::stringstreamএকটি আরও সাধারণ সরঞ্জাম। আপনি std::ostringstreamএই নির্দিষ্ট কাজের জন্য আরও বিশেষজ্ঞ ক্লাস ব্যবহার করতে পারেন ।

template <class T>
std::string YourClass::NumericToString(const T & NumericValue)
{
    std::ostringstream oss;
    oss << NumericValue;
    return oss.str();
}

আপনি যদি std::wstringধরণের স্ট্রিং নিয়ে কাজ করছেন তবে আপনাকে অবশ্যই পছন্দ করতে হবে std::wstringstreamবা std::wostringstreamতার পরিবর্তে।

template <class T>
std::wstring YourClass::NumericToString(const T & NumericValue)
{
    std::wostringstream woss;
    woss << NumericValue;
    return woss.str();
}

আপনি যদি চান যে আপনার স্ট্রিংয়ের চরিত্রের ধরণটি রান-টাইম নির্বাচনযোগ্য হতে পারে তবে আপনার এটিকে একটি টেম্পলেট পরিবর্তনশীলও করা উচিত।

template <class CharType, class NumType>
std::basic_string<CharType> YourClass::NumericToString(const NumType & NumericValue)
{
    std::basic_ostringstream<CharType> oss;
    oss << NumericValue;
    return oss.str();
}

উপরের সমস্ত পদ্ধতির জন্য আপনাকে অবশ্যই নিম্নলিখিত দুটি হেডার ফাইল অন্তর্ভুক্ত করতে হবে।

#include <string>
#include <sstream>

উল্লেখ্য, যুক্তি NumericValueউপরের উদাহরণগুলোতে এছাড়াও হিসাবে পাস করা যেতে পারে std::stringবা std::wstringসঙ্গে ব্যবহার করা std::ostringstreamএবং std::wostringstreamযথাক্রমে দৃষ্টান্ত। এটির জন্য NumericValueএকটি সংখ্যার মান হওয়া প্রয়োজন।


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