Łączenie stringów.. Problem?

0

Mam oto taki skrawek kodu:
string str11, str12, str13;
//i inne zmienne
...
str11 = sciezka_folder;
str12 = znaki_pmd[0];

str13 = str11 + str12 ;

SetWindowText(edit_glowny, str13.c_str()); // Nadanie editowi str13

Problem polega na tym iż, mogę połączyć aby str11 był pierwszy a potem zaczął się str12 ale odwrotnie już nie. Np.
Kiedy próbuję sposobem podanym na górze mam taki wynik:
[URL=http://picturepush.com/public/11531080][IMG]http://www2.picturepush.com/photo/a/11531080/220/11531080.jpg[/IMG][/URL]

Nie pokazuje się drugi string. No ale jeśli zamienię kolejność:
str13 = str12 + str11 ;
To mam takie coś:
[URL=http://picturepush.com/public/11531089][IMG]http://www1.picturepush.com/photo/a/11531089/220/11531089.jpg[/IMG][/URL]

Dziwne, nieprawdaż?

0

Troszkę już się wyjaśniło. Ścieżka najprawdopodobniej jest problemem. Ponieważ kiedy chcę np.
str11 = "C:\Users\Ja\Desktop\base_ets2\base";
to nawet wywala w kompilatorze:

error: incomplete universal character name \U|
warning: unknown escape sequence '\J'|
warning: unknown escape sequence '\D'|

0

Bo istnieje cos takiego jak ascii(ansi?) escape codes i daje sie zawsze 2x \ zeby to ominac.

0

Pięknie, fajnie lecz ciekawe jak ja mam zmienić to :)
Skoro ja pobieram ścieżkę do string z dialogu otwarcia pliku.
Jakaś funkcja która by to zrobiła, czy muszę pisać zamianę znaków z \ na \?

0

Ale ty masz problem na etapie kompilacji, a więc masz takie stringi w kodzie i możesz je ręcznie jednorazowo zmienić.

0

Funkcja nazywa się replace :)

0

Oj, to ja szybciej napiszę pętlę zmieniającą te znaki.

0

Nawet po zmianie backslahów na slashe nie pomaga. Nadal jak podaję

sciezka_do_mat = sciezka_folder_po + znaki_pmd[1] ;

To pokazuje się tylko początek ścieżki. Oczywiście po odwróceniu działania jest wszystko dobrze tyle że odwrócone.. ehh.

0

Jeden z napisów ma entera w sobie.

0

Entera powiadasz? Po pierwsze, jakby był enter ja bym to zobaczył w Edicie. Po 2. Raczej nie ma tam entera bo jakoś nie dodawałem go, ani dialog otwarcia pliku i folderu sobie go nie dodaje.

0

Debugger powiadasz. Tylko nie wiem czy jest opcja w Code Blocks do sprawdzenia dokładnie co jest w stringach. Już zdążyłem zauważyć iż CPU Registers działa, i zarejestrował to kiedy generowałem całą nazwę dodając do siebie stringi.
http://picturepush.com/public/11531811

Patrzyłem co znaczą poszczególne Integery w hexie wpisując je w strukture long i szczerzę nie widzę nic ciekawego, przynajmniej nie w ASCII

0

jak nie umiesz korzystać z debuggera to chociaż z cout-a się naucz:
cout << str << "XXX";
jak zobaczysz nieprzewidziany znak miedzy koncem stringa a XXX to bedziesz wiedzial ze cos jest nie tak

0

yhym, fajnie ale akurat używam winapi, więc konsola odpada do sprawdzania.

0

niby czemu? możesz mieć jednocześnie konsole i okno. wystarczy że zaznaczysz jako typ projektu console application.
poza tym zawsze możesz skorzystać z biblioteki stringstream:

#include <sstream>
...
stringstream ss;
ss << str << "XXX";
MessageBox(0, ss.str().c_str(), "dupa", MB_OK);

naucz się podstaw zanim zaczniesz spamować

0

for(string::iterator i=str.begin();i!=str.end();++i) if(*i<' ') MessageBox(...)

0

Powinno to tak wyglądać:
ostringstream ss;
ss << sciezka_folder_po <<"XXX" ;
string str2 = ss.str();

MessageBox(0, str2.c_str(),"",MB_OK);

Ale zresztą nie ważne. Zgadza się, enter jest po ścieżce do folderu :/

1 użytkowników online, w tym zalogowanych: 0, gości: 1