2009-02-03 3 views
4

Я пытаюсь скопировать значение в bar в целое число foo.Как преобразовать строку в целое число в C++

Это то, что у меня есть до сих пор. Когда я запускаю его, я получаю другое шестнадцатеричное значение. Любая помощь будет большой.

int main() 
{ 

    string bar = "0x00EB0C62"; 

    int foo = (int)bar; 

    cout << hex << foo; 
    ChangeMemVal("pinball.exe", (void*) foo, "100000", 4); 

    return 0; 
} 

Таким образом, выход должен быть 0x00EB0C62.

+0

Точный дубликат: http://stackoverflow.com/questions/200090/how-do-you-convert-a-c-string-to-an-int –

+0

дубликат, в соответствии с комментарием Матта в. pls delete – 2009-02-03 18:03:33

+0

В этом случае речь идет о шестнадцатеричных числах, которые могут быть информативными для тех, кто не знаком с различными форматами чисел. Я бы сказал, оставьте его. –

ответ

1

Когда вы производите строку как int, вы получаете значение ascii этой строки, а не преобразованное строковое значение, чтобы правильно преобразовать 0x00EB0C62, вам придется передать его через синтаксический анализатор строк. (одним простым способом является арифметика ascii).

2

atoi должно работать:

string bar = "0x00EB0C62"; 

int foo = atoi(bar.c_str()); 
+0

должен быть atoi (bar.c_str()) –

+0

Это не работает, если в строке есть символы, такие как «x», не так ли? – Naveen

+0

Это не сработало для меня. Он вернул 0. – 2009-02-03 19:05:05

1

Это то, что строковые потоки для, вы хотите сделать что-то вроде этого.

#include< sstream> 
#include< string> 
#include< iostream> 
int main() 
{ 
    std::string bar="0x00EB0C62"; 

    int foo=0; 

    std::istringstream to_int; 
    to_int.str(bar); 
    to_int>>foo; 

    std::cout<<std::ios_base::hex<<foo<<std::endl;; 

    . 
    etc. 
    . 

    return EXIT_SUCCESS; 
} 

Это должно сделать трюк. Извините, если я неправильно понял ios_base, я не могу вспомнить точное местоположение шестнадцатеричного флага без ссылки.

2

Atoi, безусловно, работает, но если вы хотите сделать это на C++-пути, потоки строк - это путь. Это что-то вроде этого, заметьте, код не проверен и, вероятно, не будет работать из коробки, но вы должны получить общую идею.

int i = 4; 
stringstream ss; 
ss << i; 
string str = ss.str(); 
Смежные вопросы