2017-03-23 10 views
1

私はstd :: stringで形成されたクエリ文字列を持っています。クエリは4ポイントを持ち、各ポイントはx、yを持ち、それぞれのデータ型はdoubleです。ここで私はCで、そのクエリ内の4点(8変数)を置くために、文字列を連結する方法をconcatenting stringそれを行うための最良の方法は何ですか?

++

'MULTIPOINT(16.17951 47.85549, 16.17951 47.85549, 16.17951 47.85549, 16.17951 47.85549)'; 

は、クエリの形式である:あなたの入力に応じて、

string query = "SELECT * from areas WHERE st_contains(ST_ConvexHull(areas.GEOMETRY),st_mpointfromtext('MULTIPOINT(16.17951 47.85549, 16.17951 47.85549, 16.17951 47.85549, 16.17951 47.85549)',4326));"; 




double x1 = 6.17951, x2 = 6.17951, x3 = 6.17951, x4 = 6.17951; 
double y1 = 7.85549, y2 = 7.85549, y3 = 7.85549, y4 = 7.85549; 

    /* std::string query = "SELECT * from areas WHERE st_contains(ST_ConvexHull(areas.GEOMETRY),st_mpointfromtext('MULTIPOINT(" 
        + to_string(x1) + " " + to_string(y1) + ", " 
        + to_string(x2) + " " + to_string(y2) + ", " 
        + to_string(x3) + " " + to_string(y3) + ", " 
        + to_string(x4) + " " + to_string(y4) + "',4326));"; 
*/ 

    string query = "SELECT * from areas WHERE st_contains(ST_ConvexHull(areas.GEOMETRY),st_mpointfromtext('MULTIPOINT(6.17951 7.85549, 6.17951 7.85549, 6.17951 7.85549, 6.17951 7.85549)',4326));"; 
+0

は、「あなたのように聞こえるあなたはstd::stringを持っている場合は

は、このように行います['std :: stringstream'](http://en.cppreference.com/w/cpp/io/basic_stringstream)を探していますか? –

答えて

1

タイプにはいくつかのオプションがあります。

std::string mp = "'MULTIPOINT(16.17951 47.85549, 16.17951 47.85549, 16.17951 47.85549, 16.17951 47.85549)'"; 
std::string query = "SELECT * from areas WHERE st_contains(ST_ConvexHull(areas.GEOMETRY),st_mpointfromtext(" + mp + ",4326));"; 

あなたの入力がdoublesあり、そしてあなたがC++11を使用した場合、あなたはこのようにそれを行うことができます:

std::string query = "SELECT * from areas WHERE st_contains(ST_ConvexHull(areas.GEOMETRY),st_mpointfromtext('MULTIPOINT(" 
        + std::to_string(x1) + " " + std::to_string(y1) + ", " 
        + std::to_string(x2) + " " + std::to_string(y2) + ", " 
        + std::to_string(x3) + " " + std::to_string(y3) + ", " 
        + std::to_string(x4) + " " + std::to_string(y4) + ")',4326));"; 
+0

私はto_stringを使用してクエリを実行しましたが、クエリの結果全体を返しますが、編集したポストに示すようにポイントをハードコードすると、出力に関して論理的に正しいクエリが実行されます。 – andre

+0

このようなものがうまくいかないときは、単に2つのクエリ文字列を比較してください。違いはなんですか? – Jonas

+0

違いは全くありません。それは変です。 – andre

関連する問題