Zeilenumrüche in wstring
-
Hallo Forum,
ich möchte eine eMail verschicken. Der Text (eMail Body) ist mit \n unterbrochen. Die Textboxen in meinem Programm erwarten das so und zeigen den String korrekt an. Ich hole den Text dort heraus und schiebe ihn in die ShellExecuteW Api. Das Problem ist nun das die Zeilenumbrüche nicht mehr da sind. Wie mache ich nun die "\n" -> "\r\n" Ersetzung?
wstring ReplaceString(const wstring &sSearchFor, const wstring &sReplaceBy, wstring sToProcess) { wstring::size_type pos = sToProcess.find(sSearchFor, 0); int iSearchLength = sSearchFor.length(); int iReplaceByLength = sReplaceBy.length(); // Der urspruengliche Code der fuer string geschrieben war enthielt "string::npos". // Das Programm geriet aber in eine Endlosschleife. Was acht "string::npos"? //(Warum funktioniert "wstring::npos" nicht ) //while(wstring::npos != pos ) { while(sToProcess.length() >= pos ) { sToProcess.replace( pos , iSearchLength, sReplaceBy); // Es werden nicht alle Vorkommen ersetzt, wenn durch das Ersetzen // das Pattern erneut hineingebracht wird, wird dieses ignoriert. pos = sToProcess.find(sSearchFor, pos + iReplaceByLength); } return sToProcess; } eMailString = ReplaceString(L"\n", L"\r\n", eMailString); ShellExecuteW(NULL, L"open", eMailString.c_str(), NULL, NULL, NULL);Wenn ich mir den wstring nach der Ersetzung ansehe sind die Sonderzeichen verschwunden. Wird \r\n im Quickwatch zu einem Zeilenumbruch? Auf jeden Fall ist im Outlook Fenster der Text immer noch ohne die Umbrüche.
-
Hier steht das ich alle Zeilenumbrüche durch "%0A" ersetzen soll. Dann startet aber nicht einmal mehr Outlook.
http://www.ianr.unl.edu/internet/mailto.html
-
Hat sich erledigt. Der Fehler war das der String (der Mail Body) zu lang war.