• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C++ Zaadoptowanie pliku txt do tablicy w odpowiednim formacie

VPS Starter Arubacloud
0 głosów
276 wizyt
pytanie zadane 9 stycznia 2022 w C i C++ przez Czang Kai Shrek Obywatel (1,990 p.)

Witam, piszę program, który ma zapisać słowa książki w tablicy bez znaków przestankowych i o małych literach.
Wczytuje się ładnie, tylko jak to jest ze znakami przestankowymi? i da się zamienić duże litery na małe? - próbowałem tolower, ale coś jest nie tak.
 

#include <iostream> 
#include <time.h> 
#include <algorithm> 
#include <chrono> 
#include <fstream>
#include <cstdlib>
#include <stdio.h>
#include <ctype.h>
using namespace std;


int main()
{   
    int ile;
    string* wyraz = new string[ile];
    ifstream plik("ksiazka.txt");
    for(int i=0;i<ile;i++)
    {
        plik>>wyraz[i];
        //cout<<wyraz[i]<<endl;     
    }
    cout<<ile;
    
    
}

 

1
komentarz 9 stycznia 2022 przez VBService Ekspert (251,170 p.)

Sprawdź to: Convert Uppercase to Lowercase, tak samo znaki przestankowe mają swoje odpowiedniki w tablicy ascii (np. kropka .  - 46, znak zapytania ? - 63, itd.). 

1
komentarz 9 stycznia 2022 przez j23 Mędrzec (194,920 p.)

@Czang Kai Shrek, 

    int ile;
    string* wyraz = new string[ile];

A ile jest tego ile?

komentarz 9 stycznia 2022 przez Czang Kai Shrek Obywatel (1,990 p.)

Nie ma konkretnej wartości, niżej jest tablica dynamiczna która przyjmie plik txt o nieznanej długości i umieści wyrazy z niego w tablicy.

3
komentarz 9 stycznia 2022 przez j23 Mędrzec (194,920 p.)
edycja 9 stycznia 2022 przez j23

Niestety nie, to tak nie działa. ile ma przypadkową wartość, zatem tablica wyraz ma przypadkową wielkość. Jest to UB.

Poprawna konstrukcja byłaby wtedy, gdybyś przed dodaniem nowego słowa powiększał tablicę o jeden i przypisywał słowo do ostatniej pozycji. To wymaga realokacji tablicy, co jest średnio wygodne i efektywne (w prostej implementacji). Dlatego w C++ używa się kontenera std::vector.

Dodatkowo pętla czytająca z pliku nieznaną liczbę wyrazów powinna wyglądać tak:

std::string w;

while (plik >> w) {
	// tu dodajesz w do tablicy
}

 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 2,146 wizyt
pytanie zadane 20 marca 2019 w C i C++ przez whitematt Nowicjusz (120 p.)
0 głosów
5 odpowiedzi 5,020 wizyt
0 głosów
1 odpowiedź 2,009 wizyt
pytanie zadane 26 listopada 2017 w C i C++ przez Karol.99 Użytkownik (550 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...