Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

[C++] Jak zmienić "\" na "\\"

#1
[C++] Jak zmienić "\" na "\\"
Jak można zmienić ścieżkę do pliku jeżeli jest ona na przykład : "C:\Program Files\Office 2009\Word.exe" i jest przechowywana w zmiennej typu String "sSciezka_pliku_1" żeby była : "C:\\Program Files\\Office 2009\\Word.exe" czyli z dwoma backslash'ami, tak jak wymagają tego różne funkcje w C++ np. w obiekcie klasy TStringList funkcja LoadFromFile chce ścieżki z dwoma backslash'ami?
Mogłoby być coś działające na zasadzie tego programu(niestety Delphi), wyszukuje w zmiennej znak \ i zamienia go na \\:
Kod:
procedure Rozdziel(S: String);
var P: Integer; L: TStringList; A: String;
begin
   L:=TStringList.Create;
   P:=Pos('##',S);

   while P>0 do
   begin
      A:=Copy(S, 1, P);
      L.Add(A);
      Delete(S, 1, P);
      P:=Pos('##',S);
   end;

   L.Add(S);
   ShowMessage(L.Text);
   L.Free;
end;
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#2
RE: [C++] Jak zmienić "\" na "\\"
IMO podwojne \\ jest wymagane tylko gdy piszesz jakiegos string'a "w kodzie", natomiast jesli string jest zwracany z jakiejs funkcji (runtime) to nie musisz juz nic zmieniac Wesoły
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#3
RE: [C++] Jak zmienić "\" na "\\"
Po co ci takie dziwo? Przeciez zawsze sciezka w programie wyglada wlasnie tak:
"C:\\Program Files\\Office 2009\\Word.exe", nigdy tak: "C:\Program Files\Office 2009\Word.exe", no chyba, ze na sile powymazujesz dodatkowe backslash'e. Jesli wpisujesz lancuch recznie musisz go sam zaopatrzyc w podwojne backslash'e i koniec. Jesli uzywasz jakichs funkcji ladujacych pliki z automatycznie wyszukiwanej sciezki (np. przez OpenDialog), to automatycznie masz odpowiednia postac stringu. Jesli wypiszesz na ekran takiego stringa: "C:\\Program Files\\Office 2009\\Word.exe", to zobaczysz takie cos: C:\Program Files\Office 2009\Word.exe.
Jesli wypiszesz na ekran takiego stringa: "C:\Program Files\Office 2009\Word.exe", to zobaczysz taka bzdure: 
Kod:
C:Program FilesOffice 2009Word.exe
. Dlatego, ze znak \ jest specjalnym znakiem uzywanym do sterowania tekstem i jesli chcesz zeby byl on widoczny musisz go poprzedzic drugim takim znakiem czyli napisac: \\
Jesli korzystasz z jakichs IDE i chesz zeby w jakims Label byl widoczny ten string i wpisujesz go za pomoca specjalnego okienka z wlasciwosciami (nie w edytorze kodu), to wystarczy jak wpiszesz: C:\Program Files\Office 2009\Word.exe. Wtedy najprawdopodobniej twoj IDE sam sobie z tym poradzi i na ekranie zobaczysz postac: C:\Program Files\Office 2009\Word.exe
 System operacyjny: windows_2000 Przeglądarka: ie
#4
RE: [C++] Jak zmienić "\" na "\\"
No tak moja wina nie sprawdziłem tego zanim zapytałem, wszystko działa tak jak trzeba bez żadnych takich zmian. Dzięki za wytłumaczenie. Ale tak poza tym to na innym forum (czyt. u konkurencji) dostałem taki kod:
Kod:
string DodajUkosniki(string sciezka_pliku)
{
    for (int i = 0; i < sciezka_pliku.length(); i++)                                       //---1---
    {    //wskazana litera rowna sie \ - ukosnik i nastepna jest rozna od \ - ukosnika
        if ((sciezka_pliku[i] == 92) && (sciezka_pliku[i + 1] != 92))  
        {
            sciezka_pliku.insert(i, "\\");  //wstawia \ - ukosnik do stringa obok starego  //---2---
            ++i;  //zmienna pomocnicza zwiekszona o 1, zeby nie policzylo tego dodanego ukosnika
        }

    }
    return sciezka_pliku;
}

i w dwóch miejscach w Turbo C++ wywala mi błędy:
---1--- 'lenght' is not a member of 'AnsiString'
---2--- 'insert' is not member of 'AnsiString'

Czy wie ktoś jak to naprawić?


Edit:sorry pomyliłem się w pierwszej lini powinno być:
String DodajUkosniki(String sciezka_pliku) w oryginale było z małych liter string, ale wtedy kompilator wywalał błąd : "Declaration syntax error", więc zmieniłem. Nie wiem o co chodzi w tych błędach i jak to naprawić.
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#5
RE: [C++] Jak zmienić "\" na "\\"
Ten kod jest napisany pod prawie każdy kompilator zgodny ze standardem, a tam używa się klasy string (małe litery). W Borlandzie masz AnsiString i jeszcze jakieś inne klasy. Żeby wszystko działało powinieneś włączyć bibliotekę string.
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#6
RE: [C++] Jak zmienić "\" na "\\"
A w jaki sposób mam to zrobić. Takie coś nie działa:
1)#include <string.h>
2)#include <String.h>
Masz na to jakiś pomysł?
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#7
RE: [C++] Jak zmienić "\" na "\\"
Już mówiłem że chodzi o bibliotekę standardową, a nagłówki tej biblioteki nie mają rozszerzenia ".h", powinno być:
Kod:
#include<string>
using namespace std;
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
Programy: Polecane / Nowe / Inne



Użytkownicy forum szukali:
c++ tstringlist loadfromfile rozszerzenia

Podobne wątki ([C++] Jak zmienić "\" na "\\")
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Jak zmienić jezyk w komplikatorze ? far cry 3 2 8195 31.12.2012, 18:33
Ostatni post: gubi
  Jak zmienić Hello world z konsoli na popup? hansnclothes 3 1125 29.01.2012, 11:08
Ostatni post: CTRL85
  [C++] Jak zmienić wartość (Domyślna) w nowym kluczu dawid653 1 1007 19.12.2011, 19:09
Ostatni post: dawid653

Skocz do:


Wybrane wątki ([C++] Jak zmienić "\" na "\\")
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Visual Studio Code- zmiana folderu rozszerzeń Physicist 3 1012 13.03.2020 13:19
Ostatni post: koneton
  Oczekiwanie na Akcje przycisku wanhelsing 8 1535 01.03.2020 19:44
Ostatni post: Szachista
Toungue Wybór szkoły średniej przez potencjalnego programistę Zikinan 1 1888 09.02.2020 15:58
Ostatni post: dzikuu86
  Skrypt pod sklep internetowy Talcia 4 4344 14.12.2019 19:48
Ostatni post: hexopex760
  Poszukuję pomysłu na prosty program ;) janciu96 5 10792 13.12.2019 23:32
Ostatni post: Ajgor
  Programowanie Batch (CMD) Informatyk2019 0 2965 11.12.2019 18:30
Ostatni post: Informatyk2019
  [JavaScript] Znajdowanie przedziału czasu rafal12999 0 1320 10.12.2019 17:58
Ostatni post: rafal12999
  Przekazywanie wskaźnika przez referencję w Qt Trojan3000 3 10594 10.12.2019 13:16
Ostatni post: Ajgor
  Proszę o pomoc w uzupełnieniu ankiety dt. Zawodu Programisty MaleMonki 0 1817 17.11.2019 12:47
Ostatni post: MaleMonki
  Spring framework – jakie strony polecacie do nauki? olek23 5 5143 15.11.2019 15:57
Ostatni post: Alsenas
  Programowanie windy (problem) w C++ mysza2323 2 3964 06.11.2019 23:04
Ostatni post: mysza2323
  Programy w C ~Anonim 1 4327 22.10.2019 17:48
Ostatni post: Szachista
  Książki do nauki C# olek23 14 14534 17.10.2019 13:06
Ostatni post: Ajgor
  Wyświetlanie informacji z bazy danych na stronie www PitPlay 1 5542 16.09.2019 11:18
Ostatni post: Ajgor
  Błąd przy uruchamianiu programu w Java z wiersza poleceń Physicist 3 3533 30.08.2019 14:16
Ostatni post: Physicist