[ pgavrilo @ 15.05.2010. 13:11 ] @
Može li mi neko reći funkcije za manipulaciju sa stringovima u standardnoj biblioteci za C++.
Evo liste funkcija koje mi trebaju:

[code]
-Funkcija koja daje ASCII kod datog slova i obrnuto
-Funkcija koja daje dužinu stringa
-Funkcija koja daje prvih [i]n[/i] znakova zadatog stringa
-Funkcija koja daje zadnjih [i]n[/i] znakova zadatog stringa
-Funkcija koja daje podstring datog stringa dužine [i]d[/i] počevši od pozicije [i]p[/i]
-Funkcija koja konvertuje broj u string i obrnuto
[/ code]

Nadam se da sam bio jasan i da postoje ugrađene funkcije za to. Tražio sam po Google-u ali nisam uspio.
HVALA UNAPRIJED!
[ Mihajlo Cvetanović @ 15.05.2010. 13:38 ] @
Ako radiš sa C stringovima (char*) onda ti ne vrede C++ funkcije. Da li pod stringom misliš na char* ili na std::string?
[ pgavrilo @ 15.05.2010. 14:41 ] @
Na std::string mislim.
[ Mihajlo Cvetanović @ 15.05.2010. 15:09 ] @
Okej onda

1. char je u suštini int od jednog bajta, tako da nema funkcije koja konvertuje char u ASCII. char je već ASCII. Možeš da ga kastuješ u int ako baš hoćeš.
2. s.size()
3. s.substr(0, n)
4. s.substr(s.size() - n, n)
5. s.substr(p, d)
6. možeš da koristiš stringstream, vidi http://bytes.com/topic/c/answers/132109-string-integer primer funkcija str2int i int2str

Inače odgovor za tačku 6 sam našao guglajući za "c++ convert int to string", bez navodnika.
[ Man-Wolf @ 15.05.2010. 15:17 ] @
Ne bavim se C++ -om (znam osnove neke), al googlanjem sam uspeo da nadjem sledece:

Citat:

-Funkcija koja daje ASCII kod datog slova i obrnuto


Code:

int main()
{
char a;
std::cin >> a;
std::cout << a << " " << int(a) << std::endl;-

return 0;
}


Citat:

-Funkcija koja daje dužinu stringa


Code:

// string::length
#include <iostream>
#include <string>
using namespace std;

int main ()
{
  string str ("Test string");
  cout << "The length of str is " << str.length() << " characters.\n";
  return 0;
}


Citat:

-Funkcija koja daje prvih n znakova zadatog stringa
-Funkcija koja daje zadnjih n znakova zadatog stringa
-Funkcija koja daje podstring datog stringa dužine d počevši od pozicije p


[code]

substr()

Citat:

-Funkcija koja konvertuje broj u string i obrnuto


Za ovo nisam bio 100% siguran (rekoh, nisam u C++ vodama, tako da ce valjda neko drugi napisati :-)).

P.S. Nadam se da nisam potpunio promasio odgovore ? :-)

EDIT: Sorry, pisao sam u isto vreme kad i @Mihajlo
[ pgavrilo @ 15.05.2010. 19:13 ] @
Hvala vam mnogo. Zaboravi osam najvažniju funkciju koja mji je potrebna a to je za spajanje dva stringa. Ja sam u kontrolisanom C++ koristio String.Concat za spajanje dva stringa, ali u standardnom C++u izgleda se ne zove tako.
[ X Files @ 15.05.2010. 19:34 ] @
Na primer, spajanje se moze vrsiti operatorom +, ili insert()-om.

// netestirano
Code:

string s;

string s1 = "12345678";
string s2 = "abcdefgh";

s = s1 + s2;
cout << s << endl;

s=s1;
s.insert(s1.size(), s2);
cout << s << endl;
[ pgavrilo @ 15.05.2010. 20:11 ] @
Hvala! PUNO! :)
[ pgavrilo @ 22.05.2010. 11:14 ] @
Imam sada jedno pitanje a da ne otvaram novu temu. Traeba mi funkcija koja bi konvertovala sva slova u mala i obrnuto. Treba m i funkcija za std::string a ne za char[]. Treba mi brzo odgovor jer se bliži državno iz informatike. Usput jedna manje važna funkcija koja bi mi dobro došla je da uklanja znake razmaka na početku i na kraju. Hvala unaprijed!
[ Mihajlo Cvetanović @ 22.05.2010. 12:21 ] @
Guglajući sa c++ convert string to lowercase dobio sam ovo kao drugi link: http://www.dreamincode.net/for...vert-string-to-uppercase-in-c/

Drugim rečima, nema gotove funkcije, mora da se radi karakter po karakter, ali tu su std::transform, i ::tolower koji zajedno rade posao.

Uklanjanje stvari na početku i kraju se na engleskom kaže trimming, i guglajući sa c++ trim string dobio sam ovo kao treći link: http://codereflect.com/2007/01...railing-spaces-of-string-in-c/

Drugim rečima, nema gotove funkcije, nego pronađeš prvi karakter s leva koji nije razmak, i poslednji s desna, i sa string::substr izvučeš ono u sredini.
[ Nedeljko @ 16.06.2010. 15:13 ] @
Opet reklama za Qt

Njegova klasa QString, podržava unicode, ima konverzije iz broja u string i obrnuto i funkcije toLower, toUpper, koje rade ispravno i sa neengleskim slovima (npr. ćirilicom) i još mmnogo toga.
[ karas @ 16.06.2010. 17:18 ] @
@Nedeljko

Ima li neki zgodniji nacin od pravljenja stringa od ovog:
Code:

#include <QtGui>
#include <QMessageBox>



int main(int argc, char *argv[])
{
        QApplication app(argc, argv);
        QString s = QString("") + QChar(0x106) + QChar(0x107) + QChar(0x10C) + QChar(0x10D) + QChar(0x110) + QChar(0x111) + QChar(0x160) + QChar(0x161) + QChar(0x17D) + QChar(0x17E);
        QMessageBox::information(0, "naslov", s);

        int ret = app.exec();
        return ret;


Drugim recima, mogu li da napravim unicode QString() bez QChar samo pomocu
Code:

QString (const char* str)

i zadavanja "eskejpovanih" Unicode kodova unutar stringa str?
[ Nedeljko @ 16.06.2010. 21:20 ] @
Ako ga konstruišeš preko const char*, onda si ograničen na taj skup znakova. No, možeš ti da napišeš nešto poput QString("Šućmuć") ako ti je okruženje podešeno za rad u unicode režimu. Naravno, znakove van ASCII skupa u sorsu možeš koristiti samo unutar literala.
[ Nedeljko @ 16.06.2010. 21:25 ] @
Može i ovako:

QString("\106\107\10C")