参考博文:C++笔记之system()用于在Qt中执行系统命令的习惯
code review!
注:之所以记录该笔记,是因为在Qt中自己经常使用C语言的int system( const char *command );去执行系统命令,而原始命令字符串的拼接过程中往往混杂着QString和std::string。
std::to_string()
、toStdString()
和.toLocal8Bit().constData()
是在不同情况下使用的字符串转换方法,具有不同的用途和适用场景。
std::to_string()
:
使用场景:将基本数据类型(如整数、浮点数等)转换为字符串。
适用类型:整数、浮点数等基本数据类型。
示例:
#include <string>
int main() {
int num = 42;
std::string str = std::to_string(num);
// 使用转换后的字符串
// ...
return 0;
}
toStdString()
:
使用场景:将QString
对象转换为std::string
对象。
适用类型:QString
对象。
示例:
#include <QString>
#include <string>
int main() {
QString qstr = "Hello, world!";
std::string str = qstr.toStdString();
// 使用转换后的 std::string
// ...
return 0;
}
.toLocal8Bit().constData()
:
使用场景:将QString
对象转换为const char*
指针,用于与接受C风格字符串参数的函数进行交互。
适用类型:QString
对象。
示例:
#include <QString>
int main() {
QString qstr = "Hello, world!";
const char* cstr = qstr.toLocal8Bit().constData();
// 使用转换后的 const char* 字符串
// ...
return 0;
}
在使用这些方法时,请确保包含了相应的头文件,如<string>
和<QString>
。此外,要注意在使用.toLocal8Bit().constData()
时,确保QString
的生命周期足够长,以避免悬空指针问题。