Loading...
Todir avatar Todir 24 Точки

Въпрос за компилаторите на Judge и CodeBlocks

Здравейте,

проблема ми е, че стандартния компилатор на CodeBlocks MiniGW използва версия на GCC 4.9 и фукцията stoul() от стандартната библиотека на C++11 не я приема. С по нов версия на MiniGW GCC 5.1 няма проблем и всичко работи както трябва. Та въпроса е Judge какъв компилатор използва и ще може ли да компилира програма фукцията stoul и подобните й?

Тагове:
0
C++ Fundamentals
georgi.stef.georgiev avatar georgi.stef.georgiev 921 Точки

Здравей,

Не съм напълно сигурен за компилатора, който judge използва (не поддържам аз системата), но мисля че е точно MinGW 5.1 (не пречи да пробваш

Но и дори да не поддържа stoul, аз бих си я написал сам (или поне нещо еквивалентно за повечето ситуации) - 3 реда код са. Правиш istringstream и четеш в unsigned long long:

unsigned long long stoul(const string& s) {
  unsigned long long result;
  istringstream sIn(s);
  sIn >> result;
  return result;
}

Ако наистина ти трябва като информация мога да попитам СофтУни, но не знам кога ще получа отговор. При всички положения аз бих предпочел да ползвам нещо, което съм сигурен, че ще работи правилно и че се поддържа правилно, особено за такива дребни неща.

Поздрави,

Жоро

0
Todir avatar Todir 24 Точки

Исках да използвам stoul за да прехвърлям от acii hex към инт. Мога и да го напиша ама исках по мързеливия начин. Не че много ми трябва, не се занимавай да питаш, ще пробвам. Нещата от cstdlib като strtoul работят, но с тях не могат да се ползват благинките като string.

Нещо такова:

void getColor(vector<vector<unsigned int> > &colors)
{

    for(int i=0; i<2; i++)
    {
        unsigned int colorHex;
        string rgbColor;

        vector<unsigned int> color;
        cin >> rgbColor;
        colorHex = stoul(&rgbColor[1], NULL, 16);//изпускам първия символ # и правя инт от стринга
        for(int shift = 16; shift >= 0; shift-=8)//разделям цветовете на по 8 бита със шифт и ги записвам във вектор по отделно
        {
            unsigned int currentColor;
            currentColor = colorHex>>shift & 0xff;
            color.push_back(currentColor);
        }
        colors.push_back(color);
    }
}
//накрая имам матрица от 2-та RGB стринга разделени на 8-битови цветове.

 

0
kolioi avatar kolioi 641 Точки

Поддържа stol(), stoul() и stoll() - използвал съм ги в мой код и съм сигурен за това.

Обаче имах код, който минава във VS 2015, но не се компилира в джадж. А това е част от съобщението за грешка, която ми даваше и предполагам, че версията на gcc  в джадж е 6.3

C:\Windows\TEMP\ExecutionStrategies\pkrt1e32.04h\tmpF7F4.tmp.cpp:19:47: note: suggested alternative:
In file included from C:/mingw-w64/mingw64/lib/gcc/x86_64-w64-mingw32/6.3.0/include/c++/iostream:39:0,
                 from C:\Windows\TEMP\ExecutionStrategies\pkrt1e32.04h\tmpF7F4.tmp.cpp:1:
C:/mingw-w64/mingw64/lib/gcc/x86_64-w64-mingw32/6.3.0/include/c++/ostream:590:5: note:   'std::endl'
     endl(basic_ostream<_CharT, _Traits>& __os)
     ^~~~

 

1
Todir avatar Todir 24 Точки

Тествах и си работи без проблем.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.