文章目录
目的
- Chapter1: 解决无法将参数 1 从“const char [13]”转换为“QString
- Chapter2:了解Qt 在windows中相关QString,字符串转换
Chapter1
解决无法将参数 1 从“const char [13]”转换为“QString
从代码分析入手:
#include "widget.h"
#include <QApplication>
QString foo();
void bar( QString &s);
int main(int argc, char *argv[])
{
QApplication b(argc, argv);
Widget w;
w.show();
bar(foo());
bar("Hello world!");
return b.exec();
}
QString foo()
{
QString a = "you are good!";
return a;
}
void bar( QString &s)
{
}
出现问题:
error: C2664: “void bar(QString &)”: 无法将参数 1 从“const char [13]”转换为“QString &
原因:
C++中临时对象都是const型,“Hello world!” 串与 foo()函数会产生临时对象,因此在上面的表达式中试图会将一个const对象转换为非const对象。 涉及到左值,将亡值等.
解决方法:
#include "widget.h"
#include <QApplication>
QString foo();
void bar( const QString &s);
int main(int argc, char *argv[])
{
QApplication b(argc, argv);
Widget w;
w.show();
bar(foo());
bar("Hello world!");
return b.exec();
}
QString foo()
{
QString a = "you are good!";
return a;
}
void bar( const QString &s)
{
}
添加const即可
Chapter2
了解Qt 在windows中相关QString,字符串转换
- 如何将std::string 与 C++ 中char数组 转化
Convert String to Char Array in C++
string to C++ array
【 1
string str = "abcd";
char arr[str.length() + 1];
strcpy(arr, str.c_str());
】
【 2
string str = "abcd";
char arr[str.length() + 1];
for (int x = 0; x < sizeof(arr); x++) {
arr[x] = str[x];
}
】
C++ array to string
【 1
char arr[] = {
'J', 'O', 'U', 'R', 'N', 'A', 'L', 'D', 'E', 'V' };
int size_arr = sizeof(arr) / sizeof(char);
string str = "";
for (int x = 0; x < size_arr; x++) {
str =