c是指针,被cout解释为字符串, 但是c[2]没有字符串终止符'\0', 所以会溢出,继续输出后面的未知数据.这样输出:cout << c[0] << c[1] << endl;或者声明为静态,未初始化的尾字符自动初始化0:static char c[3]={'a','b'};再或者用字符串初始化:char c[3] = "ab";...
"VC知识库" 编码为: 56 43 E7 9F A5 E8 AF 86 E5 BA 93 00 // utf-8编码,注意不再是ANSI编码了,因此用 printf/cout 将输出乱码 L"VC知识库" 编码为: 56 00 43 00 E5 77 C6 8B 93 5E 00 00 // (windows口中的unicode)编码 补充:在mingw32中使用wcout和wstring需要加一些宏,比如 #define _...
{ std::cout << "fail" << std::endl; return -1; } else { std::wcout << "success: " << wszClassName << std::endl; } return 0; 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. UTF-8编码转GBK,在vs中打印输出: std::wstring UT2WC(const char* buf) { int len...
printf("%s" , s);//输出乱码 果断切换成c++版本的cout发现可以正常输出。于是上网找答案,居然惊讶的发现printf输出字符串是针对char *的,换言之,printf只能输出c语言中的内置数据,string不是c语言内置数据。更深入的来说:s这个string类型的对象并非单单只有字符串,其内还有许多用于操作的函数,于...
关于c++中printf语句输出string类型乱码 参考链接: C++ printf() string s="helloworld"; printf("%s",s); 运行上述程序,会出现下面的结果。如果将输出语句改成cout,输出则会恢复正常。 printf只能输出C语言中的内置数据,string不是c语言内置数据。所以要做如下操作: string s = “helloworld”; printf("%s" ,...
1、引入标准输入输出库:sdtio.h。2、定义字符串形式的汉字(采用字符数组存储)。3、使用printf函数,或者puts函数输出字符串形式的汉字。例如:include<stdio.h>int main(){ char str[]="输出汉字"; printf("%s\n",str); puts(str); return 0;}/*运行结果:输出汉字输出汉字*/...
我可以像这样写代码:cout<
wchar_t 但whcar_t是VC环境下关键字,不知道你用的是什么开发平台; 记得wchar_t在取值时需要强制转换如:wchar_t *pLoc = (wchar_t*)strstr((LPSTR)(LPCTSTR)str, (LPSTR)(LPCTSTR)strTemp);cout<<str;这种输出也是错的,这样输出是显示的字符串的地址需要在改成 cout<<(LPCTSTR)str;...
再如:char b='啊';由于一个汉字是双字节的,系统会截取其中一个字节给char,但鬼才知道截取的那个字节是什么,所以cout<<b时会出现乱码。当给char变量赋值正确的用ASII表中的字符,比如char c='!',单引号里面的内容是什么,cout就会输出什么。当给char变量用一个整形字面字初始化时,比如char d=55,这时系统会...