q致命参数:将 QString 转换为常量字符* 会导致警告"format string is not a string literal"
qFatal argument: conversion of QString to const char* results in warning "format string is not a string literal"
在 Qt5.9 和 clang++-6.0.0 下,
QString ret;
qFatal(ret.toLatin1().constData());
生成警告"格式字符串不是字符串文本"。
出了什么问题,完成从 QString 到 C 字符串所需的转换的正确方法是什么?
PS:一个密切相关的问题是将QString转换为char*。然而,在这里,由于 qFatal 的类似 printf 的参数列表,不同的解决方案是可能的。
qFatal
允许从printf
中已知的可变参数...
参数。因此
qFatal("%s", ret.toLatin1().constData());
警告消失了。
相关文章:
- cppcheck在const std::string[]上引发警告
- 将std::string传递给WriteConsole API
- 为std::string的某个索引赋值
- std中有类似find_last_of的函数,而string中没有
- 使用 std::string () const 函数启动线程或未来
- 使用char类型将decimal转换为string,将string转换为decimal
- 迭代和比较映射<字符串、矢量<string>> c++ 中的值
- 当我们进行一些操作时,应该使用什么'std::string'或'std::stringstream'?
- 将向量解析<string>为字符串
- 'string.assign(string.data(), 5)' 是明确定义的还是 UB?
- 如何更改大小(std::string)
- 如何在 C++ 中从 python 做 string.format()
- q致命参数:将 QString 转换为常量字符* 会导致警告"format string is not a string literal"
- 无法使用String.Format在WPF中显示版本字符串
- 无法在C#中使用String.Format
- C# String.Format with Parameters 标准等效于 C++
- 将 %s 格式说明符与 boost::format 和 std::string 一起使用
- String.Format alternative in C++
- boost::format形式的c-string或std::string
- 从C++调用 NSLog:"Format string is not a string literal (potentially insecure)"