字符串到字符*的特殊字符转换
String to char * conversion for special character
我在C++/Qt中编写了一个简单的函数,将QString转换为char*。
功能运行良好,但我在某些特定角色上遇到了一些问题。例如,作为QString参数的"piña-colada"被转换为"pi?a-colda"。我认为在向拉丁裔的转变中出了问题。
我想要QString的"piña colada"在char*中保持"piñ
char *convertQStr2char(QString str) {
QByteArray latin_str;
char *return_str;
latin_str = str.toLatin1();
return_str = latin_str.data();
return return_str;
}
知道吗?
感谢
latin1不能表示ñ字符,或者当您实际打印字符时,它的编码错误。您可以尝试使用toLocal8Bit
而不是toLatin1
,这将确保使用的字符编码是机器上设置的。但更好的是使用UTF8编码,所以toUtf8
,这将保留任何类型的特殊字符。
正如另一个答案所指出的,除了编码问题外,您当前的代码也会导致无效读取。
这对我很有效。正如所评论的,为了更好的内存管理,返回类型被更改了:
std::string convertQStr2char(QString str) {
return std::string( str.toLatin1().constData() );
}
// usage:
std::string temp = convertQStr2char( str );
const char* tempChar = temp.c_str();
相关文章:
- 如何用转义符替换字符串中的所有特殊字符
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 转换特殊字符(UTF-8)
- 尝试将字符串/字符转换为整数会产生意外结果
- 如何使用C++将字符串中的字符转换为整数变量
- 字符转换功能 std::isupper() & std::islower() C++17
- 将字符 * 转换为字符串 *
- 在编译时将常量字符* 转换为常量 char_type*
- 如何在 C/C++ 中将无符号字符*转换为无符号字符数组?
- 错误:请求从"常量字符 [5]"转换为非标量类型"字符串"
- 无法使用字符串流将字符转换为字符串C++
- 将无符号字符 C++ 转换为 C#
- 将 std::string 转换为具有特殊字符的 FString (TCHAR / wstring)
- 将mysqlx :: value转换为带有特殊字符的std ::字符串
- 如何将字母字符转换为相应的转义特殊字符
- 字符串到字符*的特殊字符转换
- C++ 特殊字符的 Solaris 大写转换不起作用
- 将特殊字符转换为unicode c++
- 在C++中将特殊ASCII字符转换为XML兼容字符串
- 编码.Utf8将逗号转换为c#中的一些特殊字符