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

Wczytywanie operatorem >> - różnica MacOS a Win

Ostatnio zmodyfikowano 2019-06-21 16:10
Autor Wiadomość
Burzogrzmot
Temat założony przez niniejszego użytkownika
Wczytywanie operatorem >> - różnica MacOS a Win
» 2019-06-21 13:43:11
Rozpocząłem wykonywać zadanie z poziomu 4 w którym należy wczytać liczby całkowite za pomocą operatora >> i zanim się rozpisałem, zauważyłem że na Mac'u w xcode nie działa przypisanie zmiennej x w poniższym kodzie. Jedyna wartość jaką wypisuje to 0. Przeniosłem owy kod na PC z Win i ten już zadziałał. W pliku widniała tylko jedna liczba całkowita = 3. Oczywiście zmieniałem odpowiednio format pliku (miedzy .txt a .rtf). Czy może mi ktoś wytłumaczyć dlaczego się tak dzieje? Dodam tylko że na jednym, jak i na drugim sprzęcie program otwiera poprawnie plik, jednak zwracana wartość jest różna.

C/C++
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

bool wczytaj( string nazwaPliku )
{
    std::ifstream plik;
    plik.open( nazwaPliku.c_str() );
    if( !plik.good() )
         return false;
   
    int x;
    plik >> x;
    cout << x << endl;;
   
    plik.close();
   
    return true;
}

int main()
{
    if( !wczytaj( "Liczby.txt" ) )
         cout << "Nie udalo sie";
   
    return 0;
}
P-174818
Jacob99
» 2019-06-21 15:09:01
A wczytywanie funkcją getline() co daje?

Być może chodzi o niepoprawne zakończenia linii.
Spróbuj wczytać to jako stringa i zobacz czy wczytuje poprawnie.
Upewnij się też czy nie masz żadnych białych znaków przed liczbą.
P-174819
Burzogrzmot
Temat założony przez niniejszego użytkownika
» 2019-06-21 15:45:41
{\rtf1\ansi\ansicpg1250\cocoartf1671\cocoasubrtf500

Program się uruchomił i zwrócił taką wartość. ???
Sprawdziłem i na pewno nie jest to ścieżka do pliku.
W pliku jest też wyłącznie jedna liczba. Żadnych białych znaków.
P-174820
Jacob99
» 2019-06-21 15:52:45
I masz odpowiedź dlaczego nie wczytuje ci poprawnie liczby. Widocznie masz dodany w pliku nagłówek rtf (typ pliku, kodowanie itd.). Stwórz pusty plik .txt i tam wpisz wartości. RTF jest formatem zawierającym metadane, więc nie powinieneś dodawać takiego rozszerzenia (co prawda samo rozszerzenie nie definiuje typu pliku, ale np. windowsowy Notepad automatycznie dodaje metadane przy tworzeniu/edytowaniu plików z tym rozszerzeniem).
P-174821
Burzogrzmot
Temat założony przez niniejszego użytkownika
» 2019-06-21 16:10:28
Faktycznie! Co prawda zmieniałem .RTF na .TXT, ale musiały się te metadane w pliku zachowywać. Przeniosłem plik .TXT z PC na Mac i podpiąłem pod program. Teraz wczytało nawet z operatorem >>.
Dzięki :)
P-174822
« 1 »
  Strona 1 z 1