Ik ben nieuw bij C++ -programmering. In een zelfstudie zal de genoemde auteur “CIN” breken als het een ruimte in een tekenreeks leest. Als u wilt dat het programma in een hele reeksslijn met spaties leest, moet u de functie “Getline” gebruiken.
Ik kon het echter niet laten werken.
Hier zijn mijn codes:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string my_name;
cout << "Please enter your name: ";
getline(cin, my_name, "\n");
cout << "My name is " << my_name << " .";
}
De IDE die ik gebruik is Xcode. Het foutbericht is “Geen overeenkomende functie om te bellen naar ‘Getline'”.
Ik heb gezocht naar vergelijkbare problemen, maar het lijkt mij geen van de oplossingen van toepassing op mijn probleem. Misschien mis ik wat kennis? Bedankt.
Antwoord 1, Autoriteit 100%
Wat je leraar zei is niet waar. cin
Zal niet “breken”. Het is gewoon die geformatteerde extractie in een std::string
is ontworpen om woord door Word te lezen. Dat is opzettelijk. Het is niet kapot.
Wat uw fout betreft, uw oproep naar std::getline
is kapot omdat het scheidingargument het verkeerde type heeft. '\n'
is een char
letterlijk; "\n"
is een char
array letterlijke, helemaal niet wat u wilde.
Antwoord 2, Autoriteit 111%
De voltooid fout zou u vertellen waarom uw derde parameter van het verkeerde type is.
Het moet een tekentype zijn, geen null-beëindigde reeks tekens.
getline(cin, my_name, '\n');
Bewerken: En '\n'
specifiekis het veronderstelde scheidingsteken in een andere vorm van getline
:
getline(cin, my_name);
Antwoord 3
voeg dit regelwerk voor mij toe
#include <fstream>