cin.getline

Status
Niet open voor verdere reacties.

555Martijn

Gebruiker
Lid geworden
15 jun 2008
Berichten
163
Hey.

2 the point:

Waarom werkt dit niet:

Code:
#include <iostream>
#include <windows.h>

int main()
{
    using namespace std;
    char WindowName[50];
    char NewTitle[50];
    
    cout <<"Old Title: ";
    cin >> WindowName;
    HWND handle;
    handle = FindWindow(NULL, WindowName);
    if(handle == NULL)
     {
          cout << "\n\n Sorry, the window could not be found.";
          return 0;
     }
    cout << "New Title: ";
    cin >> NewTitle;
    SetWindowText(handle, NewTitle);
        
    cout << "Title Changed..." << endl;   
    system("pause");     
    return 0;
}

maar als je ipv "cin >> NewTitle" dit:
Code:
 cin.getline(NewTitle, 50, '\n');
gebruik, werkt het wel.

Ik kon de hele functie cin.getline niet, maar dat is dus ook om input the lezen net als cin? maar waarom staat er 50 achter? Dat heeft iets met die arrays te maken?
 
Waarom werkt dit niet:

Dat komt omdat NewTitle een c-string (array van chars) is. Een array kan je niet zomaar vullen.

Ik kon de hele functie cin.getline niet, maar dat is dus ook om input the lezen net als cin? maar waarom staat er 50 achter? Dat heeft iets met die arrays te maken?

getline
Die functie leest een input stream (zoals cin) in, tot er (in dit geval) 49 tekens zijn gelezen of hij '\n' tegen komt.
 
OK, top :thumb:.
Als ik je goed begrijp:

Code:
cin.getline(NewTitle, 50, '\n');

Is de 50, voor de hoeveelheid lettertjes die die leest?

maar \n word niet in de code gebruikt, zou ik het weg kunnen laten of vervangen met.. << endl;?
 
Het antwoord op beide vragen kan je vinden in de link in mijn vorige bericht :).
Characters are extracted until either (n - 1) characters have been extracted or the delimiting character is found (which is delim if this parameter is specified, or '\n' otherwise). The extraction also stops if the end of file is reached in the input sequence or if an error occurs during the input operation.

De 50 is inderdaad het aantal tekens dat hij inleest (hij leest er 1 minder in (dus 49), omdat er een teken ('\0') achter moet komen).

'\n' is gewoon het newline teken (enter). Je mag hem weglaten, omdat dit teken automatisch als "eindteken" wordt gebruikt. Je kan het niet vervangen door << endl. Het moet namelijk een teken (een char) zijn en << endl is geen char.
 
:o linkje, dacht dat het gewoon underlined was :p.

Nogmaals bedankt :thumb:.

<vraag opgelost>
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan