微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

映射内存数据在C++中出现乱码

如何解决映射内存数据在C++中出现乱码

我定义了一个全局映射 **codes:** for (auto item = sourceMap.begin(); item != sourceMap.end(); item++) { cout << "line: " << item->first<< ",line2number:"<<sourceMap[item->first]<<endl; } **outputs:**,line2number:8dminInterface,line2number:30payable{},line2number:14minInterface(){,line2number:24t(addressdataBase)payableonlyOwner,line2number:36dOwner(addressnewAddr)payable,line2number:32ansfer(addressmultisig)payableonlyOwner{ line: msg.value>Limit,line2number:38,line2number:33ransfer(msg.value);,line2number:44ansfer(this.balance);,line2number:41egatecall(bytes4(keccak256("AddToWangDB(address)")),msg.sender); 来记录行号和源行之间的映射。 有问题:

1)当我迭代地图时,如果我先打印src,然后再打印数字,打印就会出现乱码。但是,反过来也是正常的。

乱码输出代码

**code:**
 for (auto item = sourceMap.begin(); item != sourceMap.end(); item++) {
      cout << "line2number:"<<sourceMap[item->first] << ",line: " << item->first <<endl;
}

**outputs:**
line2number:32,line: functiontransfer(addressmultisig)payableonlyOwner{
line2number:38,line: msg.value>Limit
line2number:33,line: multisig.transfer(msg.value);
line2number:44,line: newAddr.transfer(this.balance);
line2number:41,line: oracle.delegatecall(bytes4(keccak256("AddToWangDB(address)")),msg.sender);
line2number:27,line: oracle=dataBase;
line2number:7,line: pragmasolidity^0.4.18;
line2number:19,line: require(msg.sender==Owner);
line2number:12,line: uint256publiclimit;
line2number:39,line: {

正常输出和反向代码

 while (getline(blockText,lllline)){
       remove_escapesALL(lllline);
       cout<<"number: "<<sourceMap[lllline]<<",new_line: "<<lllline<<endl;
}

2)map 找不到很多键对应的值。

异常输出: ''' number: 0,new_line: oracle.delegatecall(bytes4(keccak256("AddToWangDB(address)")),msg.sender); '''

和正常输出: ''' number: 38,new_line: msg.value>Limit '''

一段对应的代码

@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = {AppConfig.class})

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。