اضافه کردن کاراکتر به صف؟
سلام
می خوام از یه فایل اطلاعات بخونم و اطلاعات بسته هایی با تعداد کاراکتر های مشخص هست.
بعدش اینا رو می خوام توی یه صف بذارم برای کارای بعدی. صف ازم ارایه رو قبول نمی کننه به عنوان ورودی. چه کار باید بکنم؟
ورودی و خروجی خوندن از صف به هر حال همون بسته هایی با طول مشخص هست.
std::queue<char> MyQueue;
void ReadBinaryFromFile(std::string FileName)
{
#define BufferSize 1536
std::ifstream file(FileName,std::ios::in|std::ios::binary);
char buffer[BufferSize];
if (file.is_open())
{
file.seekg(0, file.end);
int length = file.tellg();
file.seekg(0, file.beg);
int x = 0;
while (x < length)
{
file.read(buffer, BufferSize);
MyQueue.push(buffer);
file.seekg(x = x + BufferSize,std::ios::beg);
x += 1;
}
file.close();
}
نقل قول: اضافه کردن کاراکتر به صف؟
مشکل اینجاست
std::queue<char> MyQueue;
این خط کد به صف میگه که هر عنصرت باید به کاراکتر باشه در صورتی که شما نیاز داری هر عنصرت یه آرایه از کاراکترها باشه.
اگه از std::string استفاده کنی بهتره
std::queue<std::string> MyQueue
یام کد خودت رو اینجوری تغییر بدی (تست نشده)
std::queue<char[BufferSize]> Myqueue
نقل قول: اضافه کردن کاراکتر به صف؟
std::queue<char[Buffersize]> Myqueue;
قبلا تست کرده بودم جواب نداد
نقل قول: اضافه کردن کاراکتر به صف؟
درسته. اینجا من اشتباه کردم. ما نمیتونیم یک متغیر مثل char a[50] رو به عنوان یک نوع داده حساب کنیم.
اگ بخوای متن یا تکست رو از فایل بخونی یه انتخاب خوب اینه
std::queue<std::string> MyQueue
اگه بخوای باینری رو بخونی انتخاب بهتر اینه
std::queue< std::vector <char> > MyQueue
اما اگه همچنان میخوای از کاراکتر استفاده کنی باید اینجوری صفت رو تعریف کنی std::queue <char*> MyQueue
مثال
#include <iostream>
#include <queue>
std::queue <char*> msgs;
int main()
{
char one[50]="salam";
msgs.push(one);
char two[50]="jahan\n\n";
msgs.push(two);
msgs.push("in be khatere inke az noe dadeye dorosti estefadeh mikone doroste");
while(!msgs.empty())
{
std::cout << msgs.front();
msgs.pop();
}
return 1;
}