0

Visual Studio 10、qt アドイン、および opecv ライブラリを使用しています。

私がやりたいことは、for ループを使用して複数のファイルをロードすることです。

(私は ui.image_templates_comboBox->currentText() = "cat" を持っています)

for (int i = 1; i <= 15; i++){
    string currentText = ui.image_templates_comboBox->currentText().toStdString();
    char name[40];
    sprintf(name, "Logos/cat/%s_%d.tif", &currentText, i);
    templ_img [i] = cv::imread( name );

だから、これはうまくいくはずだと思ったのですが、デバッグするときにマウスを「name」の上に置くと、 currentText 値の前に英語以外の文字が 4 つあることに気付きました。

私は2つの質問をします:

a) どうすればこれらの 4 つの役に立たない文字を省略することができますか? (このサイトでは表示できなかったので、「1234」と入力しました)

  • name 0x003a7b04 "Logos/cat/1234cat_1.tif" char [40]

b) imread() 内の式を使用して、これらの 4 行を 1 つに折りたたむことは可能ですか?

4

2 に答える 2

5

std::stringaconst char*が期待される場所に an のアドレスを使用することはできません。それらは同じではありません。

sprintf(name, "Logos/cat/%s_%d.tif", currentText.c_str(), i);
于 2015-01-02T14:21:17.783 に答える