그래서하여지도에서 항목을 찾아, 난 두 개의 텍스트 상자 (초기 정의) 및 두 벡터가TCHAR 키 이름
void mapInit()
{
m1[L"one"] = 1;
m1[L"two"] = 2;
m1[L"three"] = 3;
m1[L"four"] = 4;
m1[L"five"] = 5;
m1[L"six"] = 6;
m1[L"seven"] = 7;
m1[L"eight"] = 8;
m1[L"nine"] = 9;
m1[L"ten"] = 10;
}
첫 번째 텍스트 상자에서 "one"이라는 단어를 가져 와서 'v1'이라는 벡터에 써야합니다 (텍스트 상자에 앞으로 더 많은 단어가 있어야하므로 벡터없이 할 수 없습니다.). , 프로그램 한 것은 키 이름으로지도 원하는 값에 찾을 수있다 : 내가 디버그 어설 션 오류가 발생했습니다
TCHAR *zr = v1.at(0); // v1.at(0) has the word `one` atm
i1 = m1.find(zr); // want to get value `1` by key `one`
int z = i1->second; // and get it completely
"지도/설정 반복자 dereferencable하지".. :(
난 경우 ? 모두 동일한 작업을 수행하지만 L로 변경됩니다 "하나"그래서
TCHAR *zr = L"one"; //
i1 = m1.find(zr);
int z = i1->second;
이 작품 ... 가 왜 벡터에 의한 값으로 작동하지 않는 것 내가 디버거 벡터의 내 값 확인 - 그 'L'one "too!하지만 어쨌든 작동하지 않습니다 ...
참고 : 나는 또한 .find없이 단어를 찾으려고() 메소드 : 내가 변경됩니다
TCHAR *zr = v1.at(0);
int z = m1[zr]; // - now `z` returns a null...
'v1.at (0)'L "하나"로, 다시
를 작동합니다Heeeeeelp :(왜 작동하지 않습니까?
============================================== === Yeeeeeeeah 지금 작동
! :) 쉬운 수정 :
wstring zr = v1.at(0);
int z = m1[zr];
더블 행복한 얼굴) 도움 형제-S :
'TCHAR * '대신'std :: wstring'을 사용하십시오. –
가능한 [std :: map이 예상대로 작동하지 않습니다.] (http://stackoverflow.com/questions/10937605/stdmap-not-behaving-as) - 예) –
답변 해 주셔서 감사합니다. TextBox에서 텍스트를 가져올 수있는 GetWindowText() 메서드는 TCHAR 값 형식을 반환합니다 ... 대신 wstring을 사용하면 컴파일러에서 "std : wstring이 LPWSTR과 호환되지 않습니다"라고 말합니다. 나는 프로그래밍 win32 애플 리케이션. 다른 해결책이 없습니까? ( – FireForce