首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

string用printf输出会带乱码为什么?解决思路

2012-02-13 
string用printf输出会带乱码为什么?使用vs2003编译int_tmain(intargc,_TCHAR*argv[]){stringstr( abcabc\

string用printf输出会带乱码为什么?
使用vs2003编译
int   _tmain(int   argc,   _TCHAR*   argv[])
{
string   str( "abcabc\n ");
cout   < <   str;
printf( "%s   ",   &str);
}
输出时结果:
abcabc
烫烫abcabc

为什么用printf会有乱码呢?

当然改成printf( "%s   ",   str.c_str());就好了,初学不太懂这是为什么请高手指教!


[解决办法]
在VS2005下没事啊,你试试printf( "%s ", str);
[解决办法]
你可以不用vs2003
直接去掉&
[解决办法]
因为string不是char *什么的,你必须按string的方式使用string。

“在VS2005下没事啊,你试试printf( "%s ", str);”你把str的内存加大到128个字符再试试吧。
[解决办法]
#include <iostream>
#include <string.h>
using namespace std;

int main(int argc, char * argv[])
{
string str( "abcabc\n ");
char* a= "aaaaaaaaa ";
cout < <str;
printf( "%s ", a);
return 0;
}
--------------------------------
也就是说,string并不等同于char *。

[解决办法]
对啊,可能c语言里并名优string,然后printf()没有重载这个类型,
str.c_str()

const char *c_str();
c_str()函数返回一个指向正规C字符串的指针, 内容与本字符串相同.

[解决办法]
string 是被封装好的,
你不能象操作 char 数组那样操作它!
[解决办法]
c_str
Syntax:

#include <string>
const char* c_str();

The function c_str() returns a const pointer to a regular C string, identical to the current string. The returned string is null-terminated.

Note that since the returned pointer is of type (C/C++ Keywords) const, the character data that c_str() returns cannot be modified.
[解决办法]
把合适的东西用在合适的地方,
不要想着怎么把不合适东西怎么用上来 ......

热点排行