映射内存数据在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 (将#修改为@)