LINUX.ORG.RU

Аналог AnsiString


0

0

Недавно начались мои первые опыты програмирования под Linux (но первые опыты программирования на C++ были уже достаточно давно, опыт есть).

Одно жуть как непривычно - что gcc не ANSI-совместимый, соответственно, AnsiString там нема :(

Никто не может подсказать ничего подходящего (кроме char массивов)?

anonymous

юзай Qt. QString

anonymous
()

>что gcc не ANSI-совместимый, соответственно, AnsiString там нема AnsiString - net i v standarte c++!!! Standart tozhe ne sovmestim??? pol'zuj std::string

anonymous
()

thnx за советы

anonymous
()

видимо, стандарт - это Borland :)

grustnoe ★★
()
Ответ на: комментарий от anonymous

А тебя не сильно напрягает отсутствие IsoString?

anonymous
()

ANSI стандарт Си++ разве вообще в природе есть??

dilmah ★★★★★
()

есть, еще как есть.

anonymous
()

А с инклудами там все равно не все в порядке...

#include <string>

int main() { std::string a; return 0; }

gcc матерится:

/tmp/cc0pDnIn.o: In function `main': /tmp/cc0pDnIn.o(.text+0x18): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string[in-charge]()' /tmp/cc0pDnIn.o(.text+0x27): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string [in-charge]()' /tmp/cc0pDnIn.o(.eh_frame+0x11): undefined reference to `__gxx_personality_v0' collect2: ld returned 1 exit status

anonymous
()
Ответ на: комментарий от anonymous

> В смысле?

Если я напишу свою реализацию строк и обзову ее GostString будет ли эта фигня стандартной?

anonymous
()

> Если я напишу свою реализацию строк и обзову ее GostString будет ли эта фигня стандартной?

Если существует стандарт ГОСТа на стринги :) и если твой GostString будет ему соответствовать, то да. Насчет ANSI и того, что написал Borland - оно соответствует :)

anonymous
()

> Насчет ANSI и того, что написал Borland - оно соответствует :)

Нельзя ли поподробнее. Ссылку на стандарт, перечень параметров, по которым соответствует, и т.д.

anonymous
()

> gcc матерится: > /tmp/cc0pDnIn.o: In function `main': /tmp/cc0pDnIn.o(.text+0x18): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string[in-charge]()' /tmp/cc0pDnIn.o(.text+0x27): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string [in-charge]()' /tmp/cc0pDnIn.o(.eh_frame+0x11): undefined reference to `__gxx_personality_v0' collect2: ld returned 1 exit status

так нужно g++ использовать -- это то же самое что gcc с флагами для линковки стандартных плюсовых библиотек.

dilmah ★★★★★
()
Ответ на: комментарий от dilmah

Стандартом является класс string, а также wstring в общем все спецелизированные классы, производные от шаблона basic_string. Чтобы использовать его надо 1)#include <string> 2)using namespace std; 3)при компиляции использовать g++

AnsiString является частью библиотеки Borland и его название не имеет никакого отношения к Ansi стандарту C++. И этот класс не является частью стандарта.

gcc вернее g++ Ansi совместим, правда как и каждый компилятор он имеет несколько непереносимых фич. Но можно компилировать с определенным ключом, говорящим g++, что надо придерживать Ansi стандарта.

anonymous
()

> Одно жуть как непривычно - что gcc не ANSI-совместимый, соответственно, AnsiString там нема

LOL! спасибо за несколько минут здорового смеха. ;) на C++ есть один стандарт -- ISO/IEC 14882:1998, который также утвержден ANSI.

зы: в борланд с++ билдере строковые функции Ansi*() введены для совместимости с Delphi (VCL, в часности). делфи же эти специальные функции нужны для работы со строками а'la С/С++ (т.е. с нигде не заданной длиной, и заканчивающеся символом '\0'), поскольку их представление в памяти отличается от принятого в делфи. вобщем, если тебя интересует совместимость со стандартом на C++, то используй строки std::string, если-же -- с Delphi/VCL, то ставь Kylix. :)

Lucky ★★
()

Спасибо за ответы, ситуация проясняется :)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.