关于C++中string类型的问题 20
函数定义如下boolCIniFile::GetValue(stringsKey,stringsPro,string&sValue)函数调用如下stringc;GetVal...
函数定义如下
bool CIniFile::GetValue(string sKey, string sPro, string &sValue)
函数调用如下
string c;
GetValue("AA","bb", c);
问题:得到的这个 c 是什么样的的变量?
问题复现:(输出相同,strcmp显示不相同)
string cc = "Var" // 1
cout << "cc" << cc << "c" << c << endl;// 输出相同 cc: Var c: Var
但是当strcmp(cc.c_str(), c.c_str())时返回的不是0
目的:
如果我想把c变成一般的string类型(等效于注释 1),应该怎么做?(不用stringstream) 展开
bool CIniFile::GetValue(string sKey, string sPro, string &sValue)
函数调用如下
string c;
GetValue("AA","bb", c);
问题:得到的这个 c 是什么样的的变量?
问题复现:(输出相同,strcmp显示不相同)
string cc = "Var" // 1
cout << "cc" << cc << "c" << c << endl;// 输出相同 cc: Var c: Var
但是当strcmp(cc.c_str(), c.c_str())时返回的不是0
目的:
如果我想把c变成一般的string类型(等效于注释 1),应该怎么做?(不用stringstream) 展开
展开全部
c定义成string类型,那么它就是string类型,任何情况都不可能改变。
cc和c输出都是"Var"而strcmp(cc.c_str(), c.c_str())结果不为0,最大的可能是cc和c两者之中至少有一个存在不可见字符,将两者所有字符以16进制编码形式依次打印出来对比一下便知。
cc和c输出都是"Var"而strcmp(cc.c_str(), c.c_str())结果不为0,最大的可能是cc和c两者之中至少有一个存在不可见字符,将两者所有字符以16进制编码形式依次打印出来对比一下便知。
追问
strcmp结果不同,16进制打印出来肯定是不一样的,请问如何判断这个不可见字符是什么呢,该如何去掉呢?
就比如说,字符串的内容都是 "V5",这个未知字符是什么?(以下是16进制输出)
正常(char): 6cd90f50
未知(char): 6cd90b70
正常(string): 50a4e8b0
未知(string): 50a4e4d0
追答
这很简单,对每个字符,先将它打印出来,再将它的16进制编码打印出来,如果某个字符打印异常或不可见,那么看它的16进制编码就可以知道是哪个字符。
至于为什么会产生不可见字符,那就要问你的GetValue()函数是怎么回事了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询