c++ - sprintf - 字符串前有 4 个无用的 ascii 字符

标签 c++ qt opencv printf imread

我正在使用 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 );

所以,我认为这应该可以正常工作,但是当我调试它时,我将鼠标悬停在“名称”上方,我注意到在 currentText 值之前有 4 个非英语字符。

我问了两个问题:

a) 怎么可能省略那 4 个无用的字符? (我将它们输入为“1234”,因为该站点无法显示它们)

  • 名称 0x003a7b04 "Logos/cat/1234cat_1.tif"字符 [40]

b) 可以使用 imread() 中的表达式将这 4 行合并为 1 行吗?

最佳答案

您不能在需要 const char* 的地方使用 std::string 的地址。它们不一样。

sprintf(name, "Logos/cat/%s_%d.tif", currentText.c_str(), i);

关于c++ - sprintf - 字符串前有 4 个无用的 ascii 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27743587/

相关文章:

c++ - 使用 lambda 的 boost::io_service post

c++ - 删除句点和空格的函数

python - QStyledItemDelegate (PySide/PyQt/Qt) 中 createEditor 的父级是什么?

python - OpenCV:对于mp4文件,保存电影作品但编解码器错误

python - 如何在 python GUI TKinter 中通过相同图像标签的另一个进程调用替换正在进行的图像捕获过程

c++ - 可以在 Lua 中加载 C++ dll 文件吗?

C++ -- ' ' 之前的预期主表达式

c++ - 当静态库不可用时,是否可以从 linux 交叉编译 Windows?

c++ - 在 Ubuntu for Windows 上构建 QT5 项目

opencv - Scalar(0,255,0) 在 opencv 中不给出绿色线