2012-03-27 8 views
2

私はPythonからC++にいくぶん新しくなっています。私が本当に欠けている機能の1つは、文字列形式の演算子です。 printf()関数でこれを使用できる例をたくさん見てきましたが、文字列変数の代わりにプレースホルダを使用するだけで便利なことがあります。以下は、mysqldbモジュールを使ったPythonの例です:文字列形式の演算子を使用したC++文字列の置換

... 
stmt = 'INSERT INTO %s(pid, starttime) VALUES("%s","%s")' % ('pids', int(p0.pid), episode[0][1]) 
cursor.execute(stmt) 

C++で同様のことをすることができますか?私はグーグルに例を挙げていません。

+1

ような何かを行うことができますそれをしないでください - あなたはSQLインジェクションに自分自身を開放しています!あなたのデータベースAPIが提供する機能を使用して、通常のパラメータバインディングを代わりに行います。 –

+0

これは単なる例です。この機能には他にも多くのアプリケーションがあります。 – nomadicME

答えて

4

Boost format libraryをご覧ください。

それは

str(format("writing %s, x=%s : %d-th step \n") % "toto" % 40.23 % 50) 
4

つまり、いくつかの文字列フラグメントと変数から文字列を構成したいと思っていますか?

int someInt = 10; 
std::wstringstream wss; 
wss << L"Some string stuff and then " << someInt << L" which was an int" << std::endl; 

次に、wstringstreamの内容を他の形式に変換できます。 Cの文字列を取得するには、呼び出しがwss.str()。c_str()であると思います。

+0

これはかなり面倒です。私はそれをやろうとしていましたが、よりよい方法が必要だと思いました。 C++には文字列の置換はありませんか? – nomadicME

+0

Javaの文字列連結よりも多少面倒です。それ以外のライブラリを追加することなく、その機能を実現するのは簡単な方法です。 – ShiggityShiggityShwa

+0

追加のライブラリについてのポイント。ありがとう。 – nomadicME

関連する問題