c ++ - Hvordan man ser om en char er lig med en ny linje

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en streng, strengen indeholder for eksempel 'Hej \ nDette er en test. \ N'.


Jeg vil dele hele strenge på hver \ n i strengen. Jeg har allerede lavet denne kode:


vector<string> inData = "Hello
This is a test.
";

for ( int i = 0; i < (int)inData.length(); i++ )
{
    if(inData.at(i) == "
")
    {
    }
}


Men når jeg kompliterer dette, får jeg en fejl:
(\ n som en streng)


binary '==' : no operator found which takes a left-hand operand of type 'char' (or there is no acceptable conversion)


(ovenfor kode)


'==' : no conversion from 'const char *' to 'int'

'==' : 'int' differs in levels of indirection from 'const char [2]'


Problemet er, at jeg ikke kan se om en char er lig med 'ny linje'. Hvordan kan jeg gøre det?

Bedste reference


" " er en const char[2]. Brug ' ' i stedet.


Og faktisk har din kode ikke ens kompileret alligevel.


Du betød sikkert:


string inData = "Hello
This is a test.
";

for ( size\_t i = 0; i < inData.length(); i++ )
{
    if(inData.at(i) == '
')
    {
    }
}


Jeg fjernede vector fra din kode, fordi du tilsyneladende ikke vil bruge det (du forsøgte at initialisere en vector<string> fra en const char[], som ikke vil fungere).


Bemærk også brugen af ​​size\_t i stedet for konverteringen af ​​inData.length() til int.

Andre referencer 1


Du kan måske prøve == '\ n' i stedet for '\ n'.

Andre referencer 2


dit test udtryk er også forkert, det burde være


vector<string> inData (1,"Hello
This is a test.
");

for ( int i = 0; i < (int)(inData[0].length()); i++ )
{
    if(inData.at(i) == '
')
    {
    }
}


du skal oprette en funktion, der tager en streng, og returnere vektor af streng indeholdende sprukne linjer, jeg tror