Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Code::Blocks, przekazywanie ścieżki do pliku przez string ( plik.open( string ) );

Ostatnio zmodyfikowano 2014-01-27 22:03
Autor Wiadomość
Kyriet
Temat założony przez niniejszego użytkownika
Code::Blocks, przekazywanie ścieżki do pliku przez string ( plik.open( string ) );
» 2014-01-27 20:15:33
Witam. Otóż mam następujący, banalny problem. Od kiedy pamiętam piszę w C++ na Visual Studio, teraz zostałem zmuszony na chwilową przesiadkę na Code::Blocks. Ogromne było moje zdziwienie, gdy zobaczyłem, że program, który nie miał nawet warninga w Visual C++ w Code::Blocks zasypuje się błędami (niby ten sam język C++, a jednak...). Zauważyłem, że problem jest następujący: próbując otworzyć lub stworzyć plik za pomocą:
plik.open( jakis_string, ios::in )
 w takim wypadku Code::Blocks wyrzuca błąd, że ścieżką pliku nie może być string, tylko łańcuch znaków (WTF?), a tak dokładnie to:
|11|error: no matching function for call to 'std::basic_fstream<char>::open(std::string&, const openmode&)'
,
czyli jak zgadują muszę sam je wprowadzić. Problem w tym, ze jest to całkowicie bezużyteczne i od wielu lat przekazywałem ścieżkę pliku przez string i nie było z tym problemu. Więc zwracam się do was, przyjaciele korzystający z Code::Blocks, jak w inny sposób zrobić, aby użytkownik sam wpisywał nazwę pliku, lub ścieżkę do utworzenia, bo skoro string mu nie pasuje, to jak ?

Pracuję na najnowszej wersji Code::Blocks z kompilatorem GNU GCC Compiler...


Przykładowy program, który według Code:Blocks jest błędny.
C/C++
#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    fstream plik;
    string sciezka = "plik.txt";
    plik.open( sciezka, ios::out );
   
   
    return 0;
}
I błąd w linijce
plik.open( sciezka, ios::out );
 taki sam jak powyżej. Dla porównania, ten sam kod w Visual Studio działa poprawnie i w pliku z programem tworzy plik o nazwie "plik.txt".

P-103353
leon_w
» 2014-01-27 20:25:43
Po nazwie pliku dodaj ".str()" "sciezka.str()" i powinno śmigać.
P-103355
Kyriet
Temat założony przez niniejszego użytkownika
» 2014-01-27 20:33:05
C/C++
#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    fstream plik;
    string sciezka = "plik.txt";
    plik.open( sciezka.str(), ios::out );
   
   
    return 0;
}
W tym wypadku wypluwa mi następujący komunikat.
|10|error: 'std::string' has no member named 'str'
P-103356
RazzorFlame
» 2014-01-27 20:33:10
Leon_W - chodziło ci raczej o (char*)(tekst.c_str())
P-103357
Kyriet
Temat założony przez niniejszego użytkownika
» 2014-01-27 20:34:29
RazzorFlame, wybacz, ale z tego co napisałeś (char*)(tekst.c_str()) nic nie rozumiem :3

EDIT: Zaraz zaraz, juz się domyśliłem, po prostu c_str(). Dzięki wam za pomoc, widzę, że początki z nowym środowiskiem będą baardzo trudne. Ciekawe co jeszcze mnei spotka, przy kompilacji moich programów napisanych w Visual Studio.
P-103359
leon_w
» 2014-01-27 20:38:32
oj fakt, sorki. miało być "c_str()"
P-103361
Monika90
» 2014-01-27 20:57:28
Zwyczajnie nie włączyłeś zgodności ze standardem ISO C++. Należy dodać -std=c++11 do opcji kompilacji.
P-103362
Kyriet
Temat założony przez niniejszego użytkownika
» 2014-01-27 21:09:42
Skoro już tu jestem, to skorzystam z okazji i zapytam o jeszcze jedną sprawę, która występuje u mnie w Visual Studio. Moją uwagę zwróciły 2 fakty:
1. Ikonka pliku projektu zawiera w sobie liczbę 11 (Czyżbym podświadomie stworzył projekt C++11 ?)
2. Po około pół godziny pisania kodu w pewnym momencie po wpisaniu
std::cout
 i w tym momencie naciskam spację aby dodać operator << lecz, gdy już nacisnę spację, to nagle
std::cout
 zamienia się w
std::wcout
. Szukałem w internecie coś na temat tych wcoutów i wstringów, ale niczego sensownego się nie dowiedziałem, a chodzi mi głównie o różnice. Bo z moich wstępnych badań wynika, że cout i wcout to jest to samo... nie wiem jak z wstringiem. Nie liczę, że ktoś będzie mi tutaj tłumaczył o co z tym wszystkim chodzi, tylko chcę wiedzieć, czy ja słusznie non stop walczę, aby środowisko nie sugerowało mi używania wcoutów, czy to nie ma sensu. Pozdrawiam.
P-103366
« 1 » 2
  Strona 1 z 2 Następna strona