gcc로 컴파일 된 Solaris 용 이전에 작성한 프로그램과 동일한 역할을하는 VS에서 C++ 프로그램을 작성해야합니다. 포인터에 대한 cout 형식을 변경하는 방법
다음 "문제"
가 발생했습니다 : 솔라리스에서int var1 = 42;
int* var1Ptr = &var1;
cout << "Address of pointer " << var1Ptr << endl;
이 코드 반환은 0X 색인 주소 (0x08FFAFC)를 프로그래밍합니다.
내 VS 코드에서는 008FFAFC로 반환됩니다.
우리는 코드 내에서 비교 만 했으므로 지원 팀은 해당 색인 된 값을 찾는 로그에서 데이터를 추출하는 자체 도구를 가지고 있습니다. 로그에 쓸 때마다 0x 접두사를 추가하지 않고 이렇게 형식을 지정하는 방법이 있습니까?
cout << "Maybe this way: " << hex << int(&var1Ptr) << endl;
은 내가 원했던 효과가 없습니다.
Doing'int (& var1Ptr)'는'int '의 크기가'& var1Ptr'의 크기와 같은 시스템에서만 작동합니다. 게다가,'& var1Ptr'는 변수'var1Ptr'에 대한 포인터를 제공 할 것입니다.이 변수는'int **'타입입니다. 여러분이 생각하기에 포인터를 출력하려고하지는 않습니다. –
뭘 원하는지 확실하지 않습니다. 0x가 있든 없든? 제로 패딩? 나는 혼란스러워. –
혼란 스럽다면 솔라리스 프로그램에서 이미 0x라는 의미로 사용 된 것입니다. –