<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Zeilenumrüche in wstring]]></title><description><![CDATA[<p>Hallo Forum,</p>
<p>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 &quot;\n&quot; -&gt; &quot;\r\n&quot; Ersetzung?</p>
<pre><code class="language-cpp">wstring ReplaceString(const wstring &amp;sSearchFor,
						const wstring &amp;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 &quot;string::npos&quot;.
	// Das Programm geriet aber in eine Endlosschleife. Was acht &quot;string::npos&quot;?
	//(Warum funktioniert &quot;wstring::npos&quot; nicht )
	//while(wstring::npos != pos ) {
	while(sToProcess.length() &gt;= 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&quot;\n&quot;, L&quot;\r\n&quot;, eMailString);
ShellExecuteW(NULL, L&quot;open&quot;, eMailString.c_str(), NULL, NULL, NULL);
</code></pre>
<p>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.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/183469/zeilenumrüche-in-wstring</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 06:23:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/183469.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 05 Jun 2007 10:29:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zeilenumrüche in wstring on Tue, 05 Jun 2007 10:29:59 GMT]]></title><description><![CDATA[<p>Hallo Forum,</p>
<p>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 &quot;\n&quot; -&gt; &quot;\r\n&quot; Ersetzung?</p>
<pre><code class="language-cpp">wstring ReplaceString(const wstring &amp;sSearchFor,
						const wstring &amp;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 &quot;string::npos&quot;.
	// Das Programm geriet aber in eine Endlosschleife. Was acht &quot;string::npos&quot;?
	//(Warum funktioniert &quot;wstring::npos&quot; nicht )
	//while(wstring::npos != pos ) {
	while(sToProcess.length() &gt;= 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&quot;\n&quot;, L&quot;\r\n&quot;, eMailString);
ShellExecuteW(NULL, L&quot;open&quot;, eMailString.c_str(), NULL, NULL, NULL);
</code></pre>
<p>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.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1299165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1299165</guid><dc:creator><![CDATA[Jakata]]></dc:creator><pubDate>Tue, 05 Jun 2007 10:29:59 GMT</pubDate></item><item><title><![CDATA[Reply to Zeilenumrüche in wstring on Tue, 05 Jun 2007 11:02:30 GMT]]></title><description><![CDATA[<p>Hier steht das ich alle Zeilenumbrüche durch &quot;%0A&quot; ersetzen soll. Dann startet aber nicht einmal mehr Outlook.<br />
<a href="http://www.ianr.unl.edu/internet/mailto.html" rel="nofollow">http://www.ianr.unl.edu/internet/mailto.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1299180</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1299180</guid><dc:creator><![CDATA[Jakata]]></dc:creator><pubDate>Tue, 05 Jun 2007 11:02:30 GMT</pubDate></item><item><title><![CDATA[Reply to Zeilenumrüche in wstring on Tue, 05 Jun 2007 14:04:11 GMT]]></title><description><![CDATA[<p>Hat sich erledigt. Der Fehler war das der String (der Mail Body) zu lang war.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1299348</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1299348</guid><dc:creator><![CDATA[Jakata]]></dc:creator><pubDate>Tue, 05 Jun 2007 14:04:11 GMT</pubDate></item></channel></rss>