Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  12 927
Jeg har nettopp begynt med C++, og har lest diverse tutorials. Har en del ebooks, og leste på å få noe fra brukeren, og skrive til fil.

Så jeg tenkte at brukeren skulle få skrive noe, og at det skulle legges i en tekstfil. Her er koden jeg bruker:

Kode

#include <iostream.h>
#include <fstream.h>
#include <conio.h>

int main()
{
        cout<<"Tast inn det du vil ha i filen frabruker.txt. ";
        cin>>tekst;
 	ofstream examplefile("frabruker.txt");
 	if(examplefile.is_open())
 	{
 		examplefile << "Dette er teksten brukeren ville ha med:"<<tekst<<"\n";
 		examplefile.close;
 	}
         return(0);
         getch();
}
Feilmeldingen jeg får er:

lol.cpp: In function 'int main()':
lol.cpp:8: 'tekst' undeclared (first use this function)
lol.cpp:8: (each undeclared identifier is reported only once for each function it appeares in.
lol.cpp:13: statement cannot resolve adress of overload function
Vis hele sitatet...
Noen som kan hjelpe?
Du har ikke int variabelen din.

Prøv å sett inn : char tekst;
s0rnes's Avatar
Trådstarter
Hvor skal det settes?
helt på starten.
s0rnes's Avatar
Trådstarter

Kode

#include <iostream.h>
#include <fstream.h>
#include <conio.h>

char tekst;
int main()
{
Dette er koden min nå, men får fortsatt feil i kompileringen...
Hvilken feilmelding da?
s0rnes's Avatar
Trådstarter
lol.cpp: In function 'int main()':
lol.cpp:14: Statement cannot resolve address of overload function.
Vis hele sitatet...
hvis du har
char tekst;
kan tekst bare inneholde en byte/en bokstav.
For å lagre en tekststreng, kan du f.eks enten bruke char*, eller string:

Kode

#include<string> 
using namespace std;
int main(){
string tekst;
//code
//examplefile.close;
examplefile.close();
//code
//return(0);
getch();
return (0);
}
Jeg vet ikke om dette passer med det andre du har skrevet, da jeg pleier å inkludere <iostream> og <fstream> (uten .h), og dessuten bruke namespace std hele tiden.
close er en funksjon, og må ha () etter seg.
Du vil sannsynligvis at brukeren skal taste inn en bokstav for å avslutte programmet, men hvis return(0) står foran, avslutter det før det kommer så langt.
Lykke til
(nb! jeg har ikke testet det, så det kan være feil, men det går jo an å prøve...)
s0rnes's Avatar
Trådstarter
Takk for hjelpen! Nå er det bare en ting som mangler, når jeg har denne koden:

Kode

#include <iostream>
#include <fstream>
#include <conio.h>
#include<string>

using namespace std;
int main(){
int tekst();
{
string tekst;
cout << "Tast inn det du vil ha i filen frabruker.txt. ";
        cin >> tekst;
 	ofstream examplefile("frabruker.txt");
 	if(examplefile.is_open())
 	{
 		examplefile << >>tekst>>;
examplefile.close();
getch();
}
}
}
Da får jeg "parse error before '>>' token" på linje 16.
Linje 16 == examplefile << >>tekst>>;

Noen som kan hjelpe?
Som jeg tidligere har sagt til seg, funksjonene dine skal du lage utenfor main. Dessuten, du skal bare ha ; med når du lager en prototype av en funksjon.

Elsempelvis

Kode

int minfunksjon( void ); /* dette er prototypen, med ; */

int main( void )
{
  /* kode */
  
  minfunksjon();  /* bruk funksjonen */
  return 0;
}

int minfunksjon( void ) /* SE! uten ; */
{
  /* koden for selve funksjonen */
}
hehe, jau. Les litt mer i boken er du snill.
▼ ... over en måned senere ... ▼

Kode

ofstream examplefile("frabruker.txt");
[...]
examplefile << >>tekst>>;
Vis hele sitatet...
Her tror jeg nok du bør ta en titt i c++-boka di på operatorer og/eller iostreams. >> og << er begge operatorer som kan brukes til å (i iostreams) outputte og inputte strings. men du kan ikke bruke begge samtidig

det du ønsker å gjøre er nok:

examplefile << text;
Bare for å ta det med.

Block scope
The declarator or type specifier for an identifier with block scope appears inside a block or within the list of formal parameter declarations in a function definition. It is visible only from the point of its declaration or definition to the end of the block containing its declaration or definition. Its scope is limited to that block and to any blocks nested in that block and ends at the curly brace that closes the associated block. Such identifiers are sometimes called "local variables."
Vis hele sitatet...
Function-prototype scope
The declarator or type specifier for an identifier with function-prototype scope appears within the list of parameter declarations in a function prototype (not part of the function declaration). Its scope terminates at the end of the function declarator.
Vis hele sitatet...
Så enkelt sagt.

Kode

void funksjon( void )
  {
  int i=1;
    {
    int i=0;
    // Vil skrive ut 'i=0'
    cout << "i=" << i++ << endl;
    // Vil skrive ut 'i=2'
    cout << "i=" << ++i << endl;
    }
  // Vil skrive ut 'i=1'
  cout << "i=" << ++i << endl;
  }
Og noe annet som også går.

Kode

int main( void )
  {
  int minfunksjon( void );
  /* kode */
  minfunksjon();  /* bruk funksjonen */
  return 0;
  }

int minfunksjon( void )
  {
  /* koden for selve funksjonen */
  }
Til slutt noe som ikke går.

Kode

int main_start( void )
  {
  int funksjon( void );
  funksjon(true);
  return 0;
  }

int main_exit( void )
  {
  funksjon(false); //Vil lage en feil melding, som sier at 'funksjon' ikke er deklarert.
  return 0;
  }

int funksjon( bool bStartup )
  {
  /* koden for selve funksjonen */
  }