Lagra strängar i C++?|Programmering / Grafisk formgivning|Forum|Nordichardware

Search
Forum Scope


Match



Forum Options



Minimum search word length is 3 characters - maximum search word length is 84 characters
Lost password?
The forums are currently locked and only available for read only access
sp_Feed sp_TopicIcon
Lagra strängar i C++?
Agathorn
Kommer du hit ofta?
Medlem
Forum Posts: 348
Member Since:
August 10, 2001
sp_UserOfflineSmall Offline
1
October 31, 2001 - 9:32 am
sp_Permalink sp_Print

Hej alla!

Jag undrar om någon vet ett smidigt och enkelt sätt att lagra ett antal strängar som användaren ska mata in. Användaren ska själv bestämma hur många strängar han ska mata in och hur långa de ska vara.
Jag har försökt kolla lite på 2-dimensionella vektorer men vet inte hur jag ska göra riktigt.

PS. Jag är nybörjare så inga jätteavancerade lösningar, he he DS.

Tjoppen
Kommer du hit ofta?
Medlem
Forum Posts: 872
Member Since:
August 29, 2001
sp_UserOfflineSmall Offline
93009
October 31, 2001 - 2:58 pm
sp_Permalink sp_Print

Typ så här lr?

Först så matar han in en nuffra:

#include "iostream.h" //gör att man kan visa text och mata int data

void main( void )
{
cout << "Mata in en nuffra: "; //Skriver lite text...
int nuffra; //Skapar en int(heltal)
cin >> nuffra; //Spara det man matade in i nuffra
char *texter[nuffra]; //Skapar en lista med strängar(egentligen en pekare till en lista w/ strängar....Skit i det)
for( int x = 0; x < nuffra; x++ ) //Gör en liten loop
cin >> texter[x]; //Sparar det man matar in i texter[x] for( int x = 0; x < nuffra; x++ ) //Gör en till liten loop
cout << texter[x] << "n"; //Bara för att kolla att det funkar
}

Detta var ett hyffsat basic prog...Finns säkert bättre sät att göra detta oxå...

_________________
1200TB @ 1333, 1400 el. 1466. Beror på humör
256 SDRAM
30GB HD @ 7200 RPM
GeForce2 MX 400 AGP
8x8x32x RW-Brännare
12x DVD-ROM
2 x D-Link DFE-530TX PCI Fast Ethernet Adapter (Rev A)

[ Detta Inlägg ändrades av: Tjoppen den 2001-10-31 15:58 ]

_paul_
Mina inlägg skrivs i binär kod
Medlem
Forum Posts: 126
Member Since:
August 2, 2001
sp_UserOfflineSmall Offline
93674
November 1, 2001 - 2:38 pm
sp_Permalink sp_Print

char *texter[nuffra]; //Skapar en lista med strängar(egentligen en pekare till en lista w/ strängar....Skit i det)
for( int x = 0; x < nuffra; x++ ) //Gör en liten loop
cin >> texter[x]; //Sparar det man matar in i texter[x] den 2001-10-31 15:58 ]

Detta funkar inte eftersom texter[x] inte pekar till något och cin>> ej automatiskt allokerar minne till det som texter[x] pekar på. texter[x] måste peka till en buffer som cin >> fyller med data.

Enklast är dock att använda en array med strängar så slipper man detta problem med att allokera en buffer att skriva till.

void main( void )
{
const int MAX_STRING_SIZE = 10;

cout << "Mata in en nuffra: ";
int nuffra;
cin >> nuffra;
char **texter = new char*[nuffra]; //array med nuffra st. char* pekare.
for( int i = 0; i < nuffra; i++ ) {
texter[i] = new char[MAX_STRING_SIZE]; //allokera en buffer att skriva till för varje charpekare
cin >> texter[i]; //skriv till char bufferten som char pekaren pekar på
}
for( int i = 0; i < nuffra; i++ ) //kolla att det funkar
cout << texter[i] << endl; //char ** används mest om man kodar c i c++ så används vanligen string
//"slipper" att ta hand om minneshanteringen själv
cout << "Mata in en nuffra: "; //Skriver lite text...
cin >> nuffra;
std::string *str_texter = new std::string[nuffra]; //array med nuffra st strängar
for( int i = 0; i < nuffra; i++ )
cin >> str_texter[i]; //skriv till en string

for( int i = 0; i < nuffra; i++ ) //kolla att det funkar
cout << str_texter[i] << endl; }

_BiG_HeaD_
Kommer du hit ofta?
Medlem
Forum Posts: 379
Member Since:
September 20, 2001
sp_UserOfflineSmall Offline
93798
November 1, 2001 - 6:09 pm
sp_Permalink sp_Print
mortimer
Nu vet jag hur man gör inlägg!
Medlem
Forum Posts: 20
Member Since:
August 18, 2001
sp_UserOfflineSmall Offline
100250
November 10, 2001 - 10:21 pm
sp_Permalink sp_Print

Spara det i en dynamisk vektor, alltså en vektor som du gör new på, det blir alltså en pekarvektor. Nu e det alltså C++..

Tjoppen
Kommer du hit ofta?
Medlem
Forum Posts: 872
Member Since:
August 29, 2001
sp_UserOfflineSmall Offline
100853
November 11, 2001 - 5:49 pm
sp_Permalink sp_Print

On 2001-10-31 10:32, Agathorn wrote:
PS. Jag är nybörjare så inga jätteavancerade lösningar, he he DS.

Öhmmm....

jazdc
Nu vet jag hur man gör inlägg!
Medlem
Forum Posts: 29
Member Since:
November 20, 2001
sp_UserOfflineSmall Offline
107500
November 21, 2001 - 8:36 pm
sp_Permalink sp_Print

Och VAD är det för fel på STL? Särskilt om man vill göra det enkelt för sig. Har man en hyggligt ny C++-implementation så kan man göra ungefär så här:

#include
#include

using std::string;
using std::cin;
using std::cout;
using std::endl;

int main()
{
cout << "Antal strängar: ";
int num_strings;
cin >> num_strings;

/* Skapa en array av STL-strängar */
string *strs = new string[num_strings];

/* Läs in strängarna */
for (int i = 0; i < num_strings; i++) {
cout << "Sträng " << i + 1 << ": ";
cin >> strs[i];
}

/* Testa genom att skriva ut strängarna */
for (int i = 0; i < num_strings; i++) {
cout << strs[i] << endl;
}

/*
* Gör det till en vana att fria minnet
* när du är klar med en pekare, en
* array eller ett objekt. Här används
* delete[] och inte delete, eftersom
* strs är en array.
*/
delete[] strs;
}

Det finns många bra tutorials i C++ på webben. När du letar, se dock till att kolla att det som beskrivs är ISO C++ och att det står saker om STL (Standard Template Library) - något som nu är en central del av C++.

Forum Timezone: Europe/Stockholm
Most Users Ever Online: 1030
Currently Online:
Guest(s) 495
Currently Browsing this Page:
1 Guest(s)
Top Posters:
Andreas Galistel: 16287
Jonas Klar: 15897
ilg@dd: 10810
Nyhet: 10607
Mind: 10550
Ctrl: 10355
Gueno: 9881
Guest: 9344
Snorch: 8881
Callister: 8468
Newest Members:
PetrbonFU PetrbonFU
Karine Bembry
Dolores Mcdaniels
Anibal McLeish
Francisca Alt
Alfie Everhart
Lester Huitt
Orlando Jorgensen
Mikki Lundgren
Dakota Kozlowski
Forum Stats:
Groups: 11
Forums: 59
Topics: 146630
Posts: 1300967

 

Member Stats:
Guest Posters: 2
Members: 79425
Moderators: 0
Admins: 11
Administrators: nordicadmin, Henrik Berntsson, Anton Karmehed, Carl Holmberg, Joel Oscarsson, Mikael Linnér, Mikael Schwartz, Andreas Paulsson, Nickebjrk, Mattias Pettersson, EmxL