• 4923阅读
  • 2回复

[提问]关于 中文字符串 [复制链接]

上一主题 下一主题
离线pkxpp
 
只看楼主 倒序阅读 楼主  发表于: 2012-11-02
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2013-04-01) —
源码:
#include <QCoreApplication>#include <stdio.h>#include <ostream>using namespace std;
int getstr(char *str);int main(int argc, char *argv[]){    QCoreApplication a(argc, argv);    char *str = "E:\\我的文档\\我的学习\\MicroSoft";    printf("main1: %s\n", str);
    char str1[] = "E:\\我的文档\\我的学习\\MicroSoft";    printf("main2: %s\n", str1);
    getstr(str1);    return a.exec();}
int getstr(char *str){    char szs[256];    memcpy(szs, str, sizeof(str));    printf("1: %s\n", szs); //这里
    memcpy(szs, "E:\\我的文档\\我的学习\\MicroSoft", sizeof("E:\\我的文档\\我的学习\\MicroSoft"));    printf("2: %s\n", szs);
    return 0;}为什么红色那个输出不能够正确输出呢?貌似是字符编码的问题,哪位高手知道的,希望能够解答,不胜感激!
离线XChinux

只看该作者 1楼 发表于: 2012-11-02
重新排版下吧.
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线hohos

只看该作者 2楼 发表于: 2012-11-02
你这个程序。。有点乱。。。
#include <stdio.h>了,又using namespace std。。。

后者是C++ STL库,可程序里又没有用到string,cout等。

可以用QT直接完成的工作,做了这么多无用功。。。。

乱码的问题应该是你 源代码的字符集和PRINTF到系统的字符集不一样。

直接用QT库来操作吧。UTF-8格式源代码文件
#include <stdio.h>
QString ss = QString::fromUtf8("e:\\中文");
printf("%s\n", qPrintable(ss));


如有错误,请指正

qPrintable转换为local8bit的字符集
快速回复
限100 字节
 
上一个 下一个