Ich möchte toupper
auf jedem char
nach Punkt .
in der string
verwenden. Ich habe diesen Code versucht, aber ich erhalte einen schwarzen Bildschirm, wenn ich das Programm starte, wenn ich den Operator +
benutze.Kann nicht string :: size_type + int toupper
string fulltext = "my name is John. i have a girlfriend. her name is Anna";
string::size_type idx = 0;
while ((idx = fulltext.find(".")) != string::npos)
{
if (idx != string::npos)
{
fulltext[idx + 2] = toupper(fulltext[idx + 2]);
}
}
cout << fulltext << endl;
definieren "Es funktioniert nicht". Haben Sie zusätzlich den Debugger benutzt? –
Wahrscheinlich, weil keine Inkrementierung von idx auftritt, werden Sie also eine Endlosschleife erhalten, bei der Sie das Zeichen "i" in ". I have" nach "oben" setzen. Vielleicht möchten Sie idx = fulltext.find (".", Idx + 1) verwenden. – Nonanon
Auch einige andere Probleme in Ihrem Code: 1) Ihre 'if' -Klausel wird nicht benötigt, da die gleiche Bedingung im' while geprüft wird ', und wenn Sie in der Schleife sind, ist es bereits 'wahr'. 2) Wenn 'idx' einen gültigen Index in Ihrem String darstellt, bedeutet dies nicht automatisch, dass 'idx + 2' einen gültigen Index darstellt. –