<?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[StringCbPrintf() 1. arameter ...]]></title><description><![CDATA[<p>Hallo!</p>
<p>Also ich will mir den ganzen spaß mit den Strings, char-Arrays, UNICODE, ANSII etc. mal genauer anschauen.<br />
Und dabei bin ich auf folgende Funktion gestoßen:<br />
StringCbPrintf();<br />
<a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/WindowsUserInterface/Resources/Strings/StringReference/StringFunctions/stringcbprintf.asp" rel="nofollow">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/WindowsUserInterface/Resources/Strings/StringReference/StringFunctions/stringcbprintf.asp</a><br />
Mein Problem ist aber, dass ich den ersten Paramater nicht so hinbekommen, dass mein Compiler zufrieden ist ...</p>
<p>Dazu gibts sicher eine einfache Erklärung, aber ich kriegs nicht gebacken, mein Code:</p>
<pre><code class="language-cpp">int main (void)
{
	string szText = &quot;hallo&quot;;
	int i = szText.size();
	StringCbPrintf(szText.c_str(),10,&quot;Größe: %d&quot;,i);
	cout &lt;&lt; szText.c_str() &lt;&lt; endl;
	return (0);
};
</code></pre>
<p>Ich möchte aber das Objekt der string-class beibehalten, oder gibts da etwas besseres?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/144832/stringcbprintf-1-arameter</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 20:30:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/144832.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 22 Apr 2006 09:30:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to StringCbPrintf() 1. arameter ... on Sat, 22 Apr 2006 09:30:59 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Also ich will mir den ganzen spaß mit den Strings, char-Arrays, UNICODE, ANSII etc. mal genauer anschauen.<br />
Und dabei bin ich auf folgende Funktion gestoßen:<br />
StringCbPrintf();<br />
<a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/WindowsUserInterface/Resources/Strings/StringReference/StringFunctions/stringcbprintf.asp" rel="nofollow">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/WindowsUserInterface/Resources/Strings/StringReference/StringFunctions/stringcbprintf.asp</a><br />
Mein Problem ist aber, dass ich den ersten Paramater nicht so hinbekommen, dass mein Compiler zufrieden ist ...</p>
<p>Dazu gibts sicher eine einfache Erklärung, aber ich kriegs nicht gebacken, mein Code:</p>
<pre><code class="language-cpp">int main (void)
{
	string szText = &quot;hallo&quot;;
	int i = szText.size();
	StringCbPrintf(szText.c_str(),10,&quot;Größe: %d&quot;,i);
	cout &lt;&lt; szText.c_str() &lt;&lt; endl;
	return (0);
};
</code></pre>
<p>Ich möchte aber das Objekt der string-class beibehalten, oder gibts da etwas besseres?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1042417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1042417</guid><dc:creator><![CDATA[Top_se]]></dc:creator><pubDate>Sat, 22 Apr 2006 09:30:59 GMT</pubDate></item><item><title><![CDATA[Reply to StringCbPrintf() 1. arameter ... on Sat, 22 Apr 2006 09:38:03 GMT]]></title><description><![CDATA[<p>Die Funktion erwartet (genau wie sprintf()) einen variablen char*<sup>(1)</sup> - string::c_str() liefert allerdings einen const char* - also klappt das wohl nicht so, wie es sollte. Um einen variablen Zeiger auf deine Daten zu erhalten, mußt du dich etwas mehr verrenken:</p>
<pre><code class="language-cpp">StringCbPrint(&amp;szText[0] /*variabler Zeiger auf Stringdaten*/,szText.size(),...);
</code></pre>
<p>oder du verwendest direkt die Möglichkeiten eines String-Streams:</p>
<pre><code class="language-cpp">stringstream outText;
outText &lt;&lt; &quot;Größe: &quot;&lt;&lt;i;
cout&lt;&lt;outText.str()&lt;&lt;endl;
</code></pre>
<p><sup>(1)</sup> Genauer, einen TCHAR* (das ist je nach Compiler-Einstellung char* oder wchar_t*)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1042422</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1042422</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 22 Apr 2006 09:38:03 GMT</pubDate></item><item><title><![CDATA[Reply to StringCbPrintf() 1. arameter ... on Sat, 22 Apr 2006 09:41:40 GMT]]></title><description><![CDATA[<p>dankeschön, ich probiers mal aus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1042425</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1042425</guid><dc:creator><![CDATA[Top_se]]></dc:creator><pubDate>Sat, 22 Apr 2006 09:41:40 GMT</pubDate></item><item><title><![CDATA[Reply to StringCbPrintf() 1. arameter ... on Sat, 22 Apr 2006 09:45:29 GMT]]></title><description><![CDATA[<p>Hm, also wenn ich es so mache:</p>
<pre><code class="language-cpp">int main (void)
{
	string szText = &quot;hallo&quot;;
	int i = szText.size();
	StringCbPrintf(&amp;szText[0],10,&quot;Größe: %d&quot;,i);
	cout &lt;&lt; szText.c_str() &lt;&lt; endl;
	return (0);
};
</code></pre>
<p>Dann gibts immernoch die Compilermeldung:<br />
C:\Dokumente und Einstellungen\...\stringtests\main.cpp(13) : error C2664: 'StringCbPrintfW' : Konvertierung des Parameters 1 von 'char *' in 'unsigned short *' nicht moeglich</p>
<p>THX</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1042431</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1042431</guid><dc:creator><![CDATA[Top_se]]></dc:creator><pubDate>Sat, 22 Apr 2006 09:45:29 GMT</pubDate></item><item><title><![CDATA[Reply to StringCbPrintf() 1. arameter ... on Sat, 22 Apr 2006 09:58:17 GMT]]></title><description><![CDATA[<p>Da hast du wohl im UNICODE-Modus compiliert - in dem Fall ist TCHAR = wchar_t (= unsigned short) und du benötigst einen std::wstring.<br />
(oder noch besser: Wenn du schon mit MFC-Funktionen arbeitest, dann solltest du auch CString verwenden)</p>
<p>PS: Übrigens solltest du vor dem StringCbPrint()-Aufruf dafür sorgen, daß dein Zielstring groß genug ist für die Ausgabe (Stichwort: resize()) - sonst crasht es zur Laufzeit. Und &quot;undefiniertes Verhalten&quot; kann übel werden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1042439</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1042439</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 22 Apr 2006 09:58:17 GMT</pubDate></item><item><title><![CDATA[Reply to StringCbPrintf() 1. arameter ... on Sat, 22 Apr 2006 12:07:12 GMT]]></title><description><![CDATA[<p>Joah, bin im Unicodemodus, hatte ja gesagt, dass ich da ein bissl rumgespielt habe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> THX</p>
<p>Ich habe eigentl. mit MFC nicht viel am Hut, die Funktion wurde nur in der MSDN als recht sicher angepriesen ...<br />
CString schau ich mir auch mal an, Danke!</p>
<p>Ähm, okay, das klappt soweit, aber jetzt hat mein Compiler etwas gegen den 3ten Parameter ...<br />
Code:</p>
<pre><code class="language-cpp">int main (void)
{
	std::wstring szText;
	int i = szText.size();
	StringCbPrintf(&amp;szText[0],10,&quot;Größe: %d&quot;,i);
	cout &lt;&lt; szText.c_str() &lt;&lt; endl;
	return (0);
};
</code></pre>
<p>Fehlermeldung:<br />
C:\Dokumente und Einstellungen\....\stringtests\main.cpp(13) : error C2664: 'StringCbPrintfW' : Konvertierung des Parameters 3 von 'char [10]' in 'const unsigned short *' nicht moeglich.</p>
<p>Wie soll ich das denn bitte anders angeben als mit &quot;&quot; ?</p>
<p>Sorry für die dummen Fragen, aber das Stringzeugs da verwirrt sehr ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1042505</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1042505</guid><dc:creator><![CDATA[Top_se]]></dc:creator><pubDate>Sat, 22 Apr 2006 12:07:12 GMT</pubDate></item><item><title><![CDATA[Reply to StringCbPrintf() 1. arameter ... on Sat, 22 Apr 2006 12:34:13 GMT]]></title><description><![CDATA[<p>Entweder als L&quot;...&quot; (Unicode-String) oder als _T(&quot;...&quot;) (TCHAR-String) - ich bevorzuge letzteres.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1042526</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1042526</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 22 Apr 2006 12:34:13 GMT</pubDate></item><item><title><![CDATA[Reply to StringCbPrintf() 1. arameter ... on Sat, 22 Apr 2006 12:40:37 GMT]]></title><description><![CDATA[<p>Ah ja, dankeschön, also so:</p>
<pre><code class="language-cpp">int main (void)
{
	wstring szText;
	int i = szText.length();
	szText.resize(10);
	StringCbPrintf(&amp;szText[0],10,(L&quot;Größe: %d&quot;),i);
	cout &lt;&lt; szText.c_str() &lt;&lt; endl;
	szText.resize(0);
	return (0);
};
</code></pre>
<p>geht es jetzt so halb ...<br />
Also halb heißt, dass es keien compilerfehler mehr gibt, aber die Ausgabe ist ein bissl nicht so, wie ich sie mir erwünscht habe<br />
nähmlich die hier:</p>
<pre><code>0x00441F02
</code></pre>
<p>und so ^^ war das garnicht geplant ...</p>
<p>und die &quot;Vorsilbe _T wird nicht erkannt (undeklarierter Bezeichner) - muss ich da noch etwas einbinden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1042532</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1042532</guid><dc:creator><![CDATA[Top_se]]></dc:creator><pubDate>Sat, 22 Apr 2006 12:40:37 GMT</pubDate></item><item><title><![CDATA[Reply to StringCbPrintf() 1. arameter ... on Sat, 22 Apr 2006 13:01:43 GMT]]></title><description><![CDATA[<p>Also wenn du mit Unicode arbeitest, dann doch bitte konsequent - und dazu gehört auch <strong>w</strong>cout (oder du mußt den String per narrow() in einen char-String umrechnen).</p>
<p>(und btw, das .c_str() bei der Ausgabe kannst du weglassen - C++ Streams können C++-Strings direkt ausgeben)</p>
<p>PS: Das Makro _T() steht afaik in TCHAR.H.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1042549</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1042549</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 22 Apr 2006 13:01:43 GMT</pubDate></item><item><title><![CDATA[Reply to StringCbPrintf() 1. arameter ... on Sat, 22 Apr 2006 13:50:31 GMT]]></title><description><![CDATA[<p>Nur so als kleiner hinweis.</p>
<p>StringCbPrintf nimmt size in bytes in dem fall hast du die größe für 5 Zeichen angegeben. Desweiteren bin ich mir gerade nicht sicher ob das was ihr da mit wstring veranstaltet überhaupt erlaubt ist und nicht zu undefiniertem verhalten führt.</p>
<p>Wenn man die String* Funktionen verwenden möchte und die Anzahl der Zeichen angeben möchten (und nicht in bytes) verwendet man die StringCch* Funktionen.</p>
<p>in eurem fall wäre das dann StringCchPrintf</p>
<p>BR</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1042594</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1042594</guid><dc:creator><![CDATA[evilissimo]]></dc:creator><pubDate>Sat, 22 Apr 2006 13:50:31 GMT</pubDate></item><item><title><![CDATA[Reply to StringCbPrintf() 1. arameter ... on Sat, 22 Apr 2006 21:53:23 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>so, okay, das funktioniert jetzt soweit!</p>
<p>Jetzt ist nur noch das 1 Problem, warum ich mich eigentl. mit UNICODE beschäftigt habe, ich möchte das 'ß' und das 'ö' anzeien lassen, aber das funktioniert mit diesem Code nicht:</p>
<pre><code class="language-cpp">int main (void)
{
	wstring szText;
	szText.resize(10);
	int i = szText.size();
	StringCchPrintf(&amp;szText[0],10,(L&quot;Größe: %d&quot;),i);
	std::wcout &lt;&lt; szText;
	szText.resize(0);
	return (0);
};
</code></pre>
<p>Bei der Ausgabe werden dann für das 'ö' und das 'ß' halt doofe Zeichen eingesetzt und genau das wollte ich doch mit UNICODE verhindern *heul*<br />
es spielt dabei auch keine Rolle, ob ich das Macro L oder _T() benutze ...</p>
<p>Woran liegt denn das jetzt?</p>
<p>Und @ evilissimo, wie würdest du das denn mit dem wstring &quot;veranstalten&quot;? Ich bin offen für jede Idee, bin recht neugierig bei dem Thema im Mom, wenn ich dann erstmal meinen eigenen Weg gefunden habe ist ja alles okay, aber jetzt interessiert mich alles <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1043041</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1043041</guid><dc:creator><![CDATA[Top_se]]></dc:creator><pubDate>Sat, 22 Apr 2006 21:53:23 GMT</pubDate></item></channel></rss>