Avatar billede jannek_ek Nybegynder
21. november 2004 - 17:28 Der er 15 kommentarer og
1 løsning

læg to strenge sammen

char buffer[500];
  cin.getline(buffer,500);
  ofstream ud(buffer ???? ".txt",ios::trunc);

hvilket tegn skal der stå i stedet for ???? så de to strenge kommer til at hænge sammen?
Avatar billede bertelbrander Novice
21. november 2004 - 17:33 #1
Hvis du er sikker på at der er plads nok i buffer:

strcat(buffer, ".txt);
ofstream ud(buffer,ios::trunc);

Du kan bruge 500 - 4 i kaldet til getline for at sikre dig at der plads nok

(ellers kan std::string anbefales).
Avatar billede arne_v Ekspert
21. november 2004 - 17:34 #2
Prøv:

string buffer;
getline(cin,buffer);
ofstream ud(buffer + ".txt",ios::trunc);
Avatar billede jannek_ek Nybegynder
21. november 2004 - 17:37 #3
bertelbrander

det viker fint kom med et svar

arne v

din har jeg prøvet, pga det jeg har lært i java... men det virkede ikke
Avatar billede bertelbrander Novice
21. november 2004 - 17:46 #4
Arne's virker med en lille modifikation, ofstream's constructor skal have en (const ) char *:

#include <iostream>
#include <fstream>
using namespace std;

int main()
{
  string buffer;
  getline(cin,buffer);
  ofstream ud((buffer + ".txt").c_str(),ios::trunc);
}

Jeg samler ikke på point.
Avatar billede arne_v Ekspert
21. november 2004 - 17:48 #5
ja sorry - jeg glemte .c_str() - den er selvfølgelig nødvendig
Avatar billede jannek_ek Nybegynder
21. november 2004 - 17:51 #6
ok

så må i jo dele pointne hvis i begge har hjulpet

tak for hjælpen
Avatar billede bertelbrander Novice
21. november 2004 - 17:52 #7
Jeg synes ikke at det er logisk at den skal have en char *, for mig at se var det logiske at den brugte en "const std::string &", denne kan oprettes dynamisk ud fra en char * (f.ex "test.txt").
Avatar billede arne_v Ekspert
21. november 2004 - 17:56 #8
ofstream er jo ældre end string

men de kune jo have lavet en constructor mere
Avatar billede jannek_ek Nybegynder
21. november 2004 - 17:58 #9
hmm
burde det her ikke virke??

  ifstream ind((buffer + ".txt").c_str());
Avatar billede arne_v Ekspert
21. november 2004 - 18:51 #10
Jo.

Men du forsøger vel ikke at læse og skrive på samme fil samtidigt ?
Avatar billede jannek_ek Nybegynder
21. november 2004 - 18:52 #11
nope men jeg skal vide om der er en fil med det navn, før jeg laver den.
jeg vil jo ikke overskrive noget
Avatar billede arne_v Ekspert
21. november 2004 - 18:56 #12
Prøv:

struct stat sb;
if(stat((buffer + ".txt").c_str(),&sb) == 0))
{
  // eksisterer
}
else
{
  // eksisterer ikke
}


(kræver #include <sys/stat.h>)
Avatar billede arne_v Ekspert
21. november 2004 - 18:57 #13
Eller kan du jo appende med ios::app
Avatar billede jannek_ek Nybegynder
21. november 2004 - 18:59 #14
når jo

det havde jeg helt glemt

gi et svar så kan du få dine points nu.

ellers kan du først få dem om nogle uger
Avatar billede arne_v Ekspert
21. november 2004 - 19:09 #15
ok
Avatar billede jannek_ek Nybegynder
21. november 2004 - 19:31 #16
sa sir jeg tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester