ehsan_faal
دوشنبه 22 تیر 1394, 11:35 صبح
سلام.
من نیاز داشتم تا محتویات یکی از فولدرهام رو داشته باشم.کد زیر رو نوشتم که وقتی توی محیط IDE هستم کار میکنه ولی وقتی به تنهایی فایل exe رو اجرا میکنم با یک appCrash مواجه میشم.
میخواستم ببینم اشکالی توی این کد وجود داره؟
(در ضمن QtCreator استفاده میکنم و برنامه های دیگه ای که توی این IDE نوشتم مشکل ندارن واجرا میشن(مسیر کامپایلر minGW و فلدر bin رو به path اضافه کردم)).
#include <iostream>
#include <iomanip>
#include <dirent.h>
#include <vector>
#include <string>
#include <memory>
#include <fstream>
using namespace std;
vector<string> getContent(const string& path)
{
unique_ptr<DIR> dir(opendir(path.c_str()));
unique_ptr<dirent> pdir;
vector<string> files;
while ((pdir=unique_ptr<dirent>(readdir(dir.get())))) {
files.push_back(pdir->d_name);
}
return files;
}
int main()
{
vector<string> Content(getContent("C:/Users/Ehsan/Downloads/Packages"));
Content.erase(Content.begin(),Content.begin()+2);
ofstream result("C:/Users/Ehsan/Desktop/LaTex_Packages_List.txt");
if (result.is_open())
{
auto index=1;
for(auto& item: Content)
result<<setw(5)<<setiosflags(ios::left)<<(index++)<<": "<<item<<endl;
}
else
{
cout << "Error opening file";
}
return 0;
}
در ضمن یه سوال دومی هم داشتم توی خط 23 خروجی تابع به صورت اتوماتیک move میشه یا باید خودم با دستور move کامپایلر رو ملزم به استفاده از move constructor کنم؟
با تشکر
متن ارور:
Problem signature:
Problem Event Name: APPCRASH
Application Name: QtConsole.exe
Application Version: 0.0.0.0
Application Timestamp: 00000000
Fault Module Name: ntdll.dll
Fault Module Version: 6.3.9600.17668
Fault Module Timestamp: 54c846bb
Exception Code: c0000005
Exception Offset: 00042249
OS Version: 6.3.9600.2.0.0.768.101
Locale ID: 1033
Additional Information 1: 5861
Additional Information 2: 5861822e1919d7c014bbb064c64908b2
Additional Information 3: a10f
Additional Information 4: a10ff7d2bb2516fdc753f9c34fc3b069
Read our privacy statement online:
http://go.microsoft.com/fwlink/?linkid=280262
If the online privacy statement is not available, please read our privacy statement offline:
C:\Windows\system32\en-US\erofflps.txt
من نیاز داشتم تا محتویات یکی از فولدرهام رو داشته باشم.کد زیر رو نوشتم که وقتی توی محیط IDE هستم کار میکنه ولی وقتی به تنهایی فایل exe رو اجرا میکنم با یک appCrash مواجه میشم.
میخواستم ببینم اشکالی توی این کد وجود داره؟
(در ضمن QtCreator استفاده میکنم و برنامه های دیگه ای که توی این IDE نوشتم مشکل ندارن واجرا میشن(مسیر کامپایلر minGW و فلدر bin رو به path اضافه کردم)).
#include <iostream>
#include <iomanip>
#include <dirent.h>
#include <vector>
#include <string>
#include <memory>
#include <fstream>
using namespace std;
vector<string> getContent(const string& path)
{
unique_ptr<DIR> dir(opendir(path.c_str()));
unique_ptr<dirent> pdir;
vector<string> files;
while ((pdir=unique_ptr<dirent>(readdir(dir.get())))) {
files.push_back(pdir->d_name);
}
return files;
}
int main()
{
vector<string> Content(getContent("C:/Users/Ehsan/Downloads/Packages"));
Content.erase(Content.begin(),Content.begin()+2);
ofstream result("C:/Users/Ehsan/Desktop/LaTex_Packages_List.txt");
if (result.is_open())
{
auto index=1;
for(auto& item: Content)
result<<setw(5)<<setiosflags(ios::left)<<(index++)<<": "<<item<<endl;
}
else
{
cout << "Error opening file";
}
return 0;
}
در ضمن یه سوال دومی هم داشتم توی خط 23 خروجی تابع به صورت اتوماتیک move میشه یا باید خودم با دستور move کامپایلر رو ملزم به استفاده از move constructor کنم؟
با تشکر
متن ارور:
Problem signature:
Problem Event Name: APPCRASH
Application Name: QtConsole.exe
Application Version: 0.0.0.0
Application Timestamp: 00000000
Fault Module Name: ntdll.dll
Fault Module Version: 6.3.9600.17668
Fault Module Timestamp: 54c846bb
Exception Code: c0000005
Exception Offset: 00042249
OS Version: 6.3.9600.2.0.0.768.101
Locale ID: 1033
Additional Information 1: 5861
Additional Information 2: 5861822e1919d7c014bbb064c64908b2
Additional Information 3: a10f
Additional Information 4: a10ff7d2bb2516fdc753f9c34fc3b069
Read our privacy statement online:
http://go.microsoft.com/fwlink/?linkid=280262
If the online privacy statement is not available, please read our privacy statement offline:
C:\Windows\system32\en-US\erofflps.txt