كيفية مسح المخزن المؤقت لسلسلة الدفق؟
-
28-10-2019 - |
سؤال
لدي سلسلة تيار في حلقتين وهي تحرق ذاكرة الوصول العشوائي الخاصة بي.إذًا كيف يمكن مسح المخزن المؤقت للأوتار البخارية بشكل صحيح؟إنه مثل هذا للتبسيط:
stringstream ss (stringstream::in | stringstream::out);
for()
{
for()
{
val = 2;
ss << 2;
mystring = ss.str();
// my stuff
}
// Clear the buffer here
}
كتب 2 ثم 22 ثم 222...لقد حاولت .clear() أو .flush() لكن الأمر ليس كذلك.فكيف أفعل هذا؟
المحلول
الحل الواضح هو استخدام رمز ترميز عام جديد في كل مرة ، على سبيل المثال: Genacodicetagpre
هذه هي الطريقة التي صمم بها الرمز العام لاستخدامه.(أيضا: هل أنت هل تريد حقًا رمزًا عامًا ، أو مجرد رمز ترميز عام؟)
نصائح أخرى
تعيين ss.str("");
عندما تريد مسح الأحرف الزائدة (تحرير:شكرًا لك).
يستخدم .clear()
إذا قام الدفق الخاص بك بتعيين أي علامات خطأ في عملية التحويل السابقة.
إذا كنت تستخدم C++0x:
ss.swap(stringstream());
فيجوال ستوديو 2010 (SP1) يدعمه.
إذا كنت لا تستخدم C++0x:
ss.seekp(0);
ss.seekg(0);
ss.str("");
ss.clear();
لن يتم مسح الذاكرة، ولكن يمكنك استخدام الخاص بك stringstream
كائن كما سيكون فارغا من قبل.