btcq.net
当前位置:首页 >> C++ string 初始赋值用ChAr[]会乱码 >>

C++ string 初始赋值用ChAr[]会乱码

char数组一定要以'\0'结尾 例如:要转换的字符串为”Huang“ 定义 char c[6] ={'H','u','a','n','g','\0'} 再用string s(&c); 即可 若用char c[5] ={'H','u','a','n','g''} 再用string s(&c); 则会出现你那种情况

因为所写的程序错了,所以才会乱码的.

string str1; // 可以 string str2[10];//可以 string str3="hello";//可以,注意抄中间过程,先调用string的带char* 构造函2113数,然后调5261用复制构造函数 string str4[10]="hello";//不可以,数组不能这样初始4102化1653 string str5[10]={};//可以 初始化为空字符串

建议你用memset将a数组初始化为全部的都是'\0',然后再进行后面的操作..因为size()得出的结果是5,也就是没有将str的最后一个'\0'算到大小内,所以a[5]以及后面的是随机值..是乱码的..

方法一:使用stringstream进行转换.示例:#include <iostream>#include <string>#include <sstream>using namespace std;int main(int argc, char *argv[]){ stringstream sstr; sstr.clear(); char * ch = new char[1024]; string s="abcd"; sstr<<s;//将s

string 是类,不是数据类型,所以不能像int和char那样直接加减,给你个例子吧:string s,temp; char c = 'a'; temp = c; s.append(temp); cout s.append(temp); cout 最后的结果就是:a aa 这是很笨的一个方法,但是也是我最常用的,因为我不能将char直接转换为string

name=nam;换成:strcpy(name, nam.c_str());

char chSrc = 'c';char szTemp[128] = {0}; sprintf_s(szTemp, sizeof(szTemp), "%c", chSrc); string strTemp = szTemp; 先转成char*,然后直接就可以赋值给string了.

printf("%s", str.c_str());因为printf里面要求是char*类型,string和char*是不一样的

#include using namespace std;int main() { string str = "hello"; cout 评论0 0 0

dkxk.net | mwfd.net | zxwg.net | clwn.net | fpbl.net | 网站首页 | 网站地图
All rights reserved Powered by www.btcq.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com