PDA

View Full Version : سوال: اضافه کردن کاراکتر به صف؟



pouya93
چهارشنبه 28 تیر 1396, 12:18 عصر
سلام
می خوام از یه فایل اطلاعات بخونم و اطلاعات بسته هایی با تعداد کاراکتر های مشخص هست.
بعدش اینا رو می خوام توی یه صف بذارم برای کارای بعدی. صف ازم ارایه رو قبول نمی کننه به عنوان ورودی. چه کار باید بکنم؟
ورودی و خروجی خوندن از صف به هر حال همون بسته هایی با طول مشخص هست.

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();
}

m.r226
پنج شنبه 29 تیر 1396, 09:18 صبح
مشکل اینجاست


std::queue<char> MyQueue;

این خط کد به صف میگه که هر عنصرت باید به کاراکتر باشه در صورتی که شما نیاز داری هر عنصرت یه آرایه از کاراکترها باشه.
اگه از std::string استفاده کنی بهتره
std::queue<std::string> MyQueue
یام کد خودت رو اینجوری تغییر بدی (تست نشده)



std::queue<char[BufferSize]> Myqueue

pouya93
پنج شنبه 29 تیر 1396, 16:49 عصر
std::queue<char[Buffersize]> Myqueue;


قبلا تست کرده بودم جواب نداد

m.r226
شنبه 31 تیر 1396, 10:59 صبح
درسته. اینجا من اشتباه کردم. ما نمیتونیم یک متغیر مثل 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;
}