整数没有正确递增

时间:2014-04-24 07:07:25

标签: c++ string int hex mips

好的,所以我正在尝试实现一个MIPS程序计数器,它涉及我存储十六进制值以跟随程序所在的位置(程序计数器)。但问题是下面的代码不会超过单个数字,因为它增加,即0,4,8,0等,其中重复的0应该等于10。

如果str_pc初始设置为00000010,则此源可以正常工作,否则不会。

#include <iostream>
#include <iomanip>
#include <sstream>
#include <string>
#include <map>

using namespace std;

string str_pc = "00000008";

int main(){
    int temp_pc;

    stringstream ss;
    ss << hex <<str_pc;
    ss >> dec >> temp_pc;
    cout << "Temp_PC: " <<temp_pc<<endl;
    temp_pc = temp_pc+4;

    ostringstream ss1;
    ss1 << hex << temp_pc;
    string x(ss1.str());

    str_pc = x;

    stringstream ss2;
    ss2 << hex <<str_pc;
    ss2 >> dec >> temp_pc;
    cout << "Temp_PC: " <<temp_pc<<endl;
    temp_pc = temp_pc+4;

    ostringstream ss3;
    ss3 << hex << temp_pc;
    string y(ss3.str());

    str_pc = y;

    cout << str_pc <<endl;
}

任何人都可以对我做错了吗?

1 个答案:

答案 0 :(得分:3)

十六进制表示字符串中的数字(整数)。

ss << hex << str_pc;
ss >> dec >> temp_pc;

这没有意义。第一行中的hex修饰符对字符串不起作用,因此在这里没用。另一方面,在第二行使用int,所以你应该放置hex修饰符,使缓冲区中的字符串被解释为十六进制数字;

ss << str_pc;
ss >> hex >> temp_pc;