Avatar billede krismort Nybegynder
20. oktober 2005 - 12:39 Der er 9 kommentarer

indrykning i konsol

Hej,
Er der en som har en ide til hvordan man smartest kan indrykke consol outputtet til midten af en linie uden at skulle checke på hvor langt det man allerede har skrevet ud til nyærende linie er så længe at man ved at det der allerede er skevet ud befinder sig mellem 5 til 30 karakterer.

sådan at outputtet bliver noget alà:
ln:14  asdasdsad.cpp                                warning
ln:14  asdasdssdsadsadsadsadasdaasdd.cpp            error
ln:30  asdasdssdsadsadsadsadasdaasdd.cpp            error
ln:123  1.cpp                                        assertion
Avatar billede krismort Nybegynder
20. oktober 2005 - 12:40 #1
hehe eksperten kan self ikke vise det ordentligt
Avatar billede krismort Nybegynder
20. oktober 2005 - 12:40 #2
iøvrigt lige det problem som jeg gerne ville undgå
Avatar billede arne_v Ekspert
20. oktober 2005 - 12:59 #3
det kan du ikke standardmæssigt i console

diverse platform specifikke API kan hente positionen og så kan man
udregne hvormange mellemrum der skal til

kan du ikke sjusse dig igennem med \t ?
Avatar billede arne_v Ekspert
20. oktober 2005 - 13:00 #4
og problemet her skyldes at tingene vises i en font hvor alle tegn ikke er
lige brede
Avatar billede krismort Nybegynder
20. oktober 2005 - 15:36 #5
sjusse, jow det kunne jeg vel godt... hvad vil det er en fil  ? så kan jeg vil sætte pointeren ? kan man ikke gøre det samme og så hver linie i filen ud til console.. jeg skal alligevel skrive det samme til en fil....
Avatar billede arne_v Ekspert
20. oktober 2005 - 15:43 #6
du kan flytte pointeren i en binær fil

i en tekst fil vil du alligevel skule padde med spaces
Avatar billede bertelbrander Novice
21. oktober 2005 - 01:17 #7
Hvis du kan udkrive det hele på én gang:
void NicePrint(int aLineNo, const char *aFileName, const char *aPop)
{
  printf("Ln: %4d %-35s %s\n", aLineNo, aFileName, aPop);
}
Eller hvis man foretræker iostreams:
void NicePrint(int aLineNo, const char *aFileName, const char *aPop)
{
  std::cout << "Ln: " << std::setw(4) << aLineNo << " ";
  std::cout << std::setiosflags(std::ios::left) << std::setw(35) << aFileName;
  std::cout << std::resetiosflags(std::ios::left) << " " << aPop << std::endl;
}

Hvis ikke du kan udskrive det hele på en gang er du nød til at holde styr på hvor meget du har skrevet, printf fortæller netop hvor mange tegn den har skrevet.
Avatar billede arne_v Ekspert
21. oktober 2005 - 20:31 #8
det er vel strengt taget lige meget om det bliver udskrevet på en gang

pointen er at man altid skriver i bestemt bredde og derfor ved hvor man er

og det er nok typisk situationen i den virkelige verden
Avatar billede arne_v Ekspert
04. november 2005 - 19:06 #9
all set ?
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