sprintf - 字符串前 4 个无用的 ASCII 字符
sprintf - 4 useless ascii characters before string
我正在使用Visual Studio 10,qt addin和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", ¤tText, i);
templ_img [i] = cv::imread( name );
所以,我认为这应该可以正常工作,但是当我调试它时,我将鼠标悬停在"name"上方,我注意到当前文本值之前有 4 个非英文字符。
我问两个问题:
a) 怎么可能省略这 4 个无用的字符?(我将它们键入为"1234",因为此站点无法显示它们)
- 名称 0x003a7b04 "徽标/猫/1234cat_1.tif" 字符 [40]
b) 可以使用 imread() 中的表达式将这 4 行折叠为 1 行?
不能在需要const char*
的地方使用std::string
的地址。它们是不一样的。
sprintf(name, "Logos/cat/%s_%d.tif", currentText.c_str(), i);
你把框架混合了很多,你不明白sprintf
是如何工作的。像这样修复它:
for (int i = 1; i <= 15; i++){
QString fileName = QString("Logos/cat/%1_%2.tif")
.arg(ui.image_templates_comboBox->currentText())
.arg(i);
templ_img [i] = cv::imread(fileName.toAscii().data()); // or: toLocal8Bit, toLatin1(), toUtf8()
相关文章:
- C++,在int数组中输入字符串或字符会输出0,而不是ascii或error
- 为什么我的C++程序的程序集输出充满了 .ascii,没有汇编代码?
- 有没有办法通过使用十进制 ASCII 代码自动类型扣除来获取字符?
- 如何将字节数组元素替换为修改的十六进制 ASCII 符号?
- ascii 和 unicode 在处理级别有什么区别吗?
- 在C++中使用 ASCII 代码将输入从小写转换为大写
- 弄清楚如何在C++中将整数读入 ASCII
- 如何修复艺术ASCII,我点击一个字母就可以了,但输入一个阶段艺术出来了
- 使用指针将 ASCII 值添加到整数
- 用于 ASCII 的环绕式 C++
- RE2 不匹配非 ASCII 字符
- 打印从 0 到 255 的所有 ASCII 字符
- C++ 电话号码字母拨号程序 - 语法错别字?还是非 ASCII 字符?
- 无符号字符打印其 ASCII 值
- Windows 非 ASCII 文件路径
- 非 ASCII 文件路径窗口
- 我的程序将 26 个字母转换为 ascII 没有显示正确答案
- 我写的 ASCII 到二进制转换器C++向后显示二进制,如何使其正确显示?
- 如何从 QString 中包含的十六进制值中获取 ASCII 字符?
- sprintf - 字符串前 4 个无用的 ASCII 字符