기능? 문자잘못된 검출
잘못된 검출
답변
귀하의 문자열은 wstring
하지만 더 쉽게 wstring
보다 (A const wchar_t*
에 붕괴를 통해)을 bool
로 변환하는 const wchar_t[]
없습니다. 꽤 많은 완벽한 설명을 제공
warning C4800: 'const wchar_t *' : forcing value to bool 'true' or 'false' (performance warning)
: 비주얼 스튜디오에서 코드를 실행
날이 오류를했다.
문자열 리터럴은'const wchar_t *'가 아니며, const'wchar_t'의 배열입니다 (별로 똑같은 것은 아닙니다). –
수정. 나는 그것을 고쳐 줄 것이다. – DeathTails
암시 적 유형 변환에 대한 규칙에 물렸습니다. 문제는 L"my string data for test"
이 bool
도 아니고 std::wstring
도 아닌 것입니다. 사실 wchar_t
의 const 배열입니다.
포인터가 배열에 붕괴되어 bool
(포인터가 null인지 테스트 - 그렇지 않은 경우) 포인터가 오는 bool
으로 변환 될 수 있습니다.
적절한 생성자를 호출하여 std::wstring
으로 변환 할 수 있습니다.
문제는 표준에서 컴파일러가 "잘못된"것을 선택해야한다는 것입니다.
아마 가장 적합한 방법은 적절한 추가 과부하를 작성하는 것입니다. 예를 들어 :
void test(const wchar_t* p)
{
test(std::wstring(p));
}
리터럴 다양한 문자열 유형 const wchar_t [N+1]
이다. 당신이 test
에 전달하면,이 두 가지 가능한 경로 :
const wchar_t[N+1]
->const wchar_t*
->bool
const wchar_t[N+1]
->const wchar_t*
->std::wstring
첫 번째 버전이 있기 때문에 선택
오버로드 확인 표준 불리언 변환을 bool
으로 선호하는 것은 사용자 정의 변환보다 std::wstring
을 선호합니다.
하나의 가능한 해결책은 Martin suggests과 같이 명시 적으로 std::wstring
을 작성하는 것일 수 있지만 나중에 다시 물어볼 가능성이 있습니다. 그 대신 문제를 피하기 위해 다른 이름을 가진 두 가지 기능을 사용하거나 const wchar_t*
을 사용하고 std::wstring
버전으로 전달하는 오버로드를 추가합니다.
void test(const wchar_t* w) {
test(std::wstring{w});
}
그 말은 내가하는 말에 대한 훨씬 더 명확한 설명입니다. 내 workround를 추가 할 것을 제안 할 수 있습니까? (다른 "오버로드"를 추가하여 "right"함수를 호출 할 수 있습니까?) –
두번째 경우에, 시퀀스는'const wchar [N + 1]'->'const wchar *'->'std :: wstring' (실제로'wchar'는'wchar_t'이어야합니다)입니다. 기본적으로 포인터를 'bool'로 변환하는 것이 사용자 정의 변환 (즉,'std :: wstring'의 생성자 호출)보다 선호됩니다. – Peter
@Peter Fixed, thanks 고마워. – TartanLlama
모든 대답이 주어지면 C++ 14를 사용하면 첫 번째 경우에 전달하는 리터럴을 조정할 수 있습니다.
#include <iostream>
#include <string>
using namespace std;
//Function for bool data
void test(const bool b) {
wcout << L"bool data is : " << b << endl;
};
//Function for wstring data
void test(const wstring &w) {
wcout << L"wstring data is : " << w.c_str() << endl;
};
int main() {
test(L"my string data for test"s);
test(true);
return 0;
}
output :
wstring data is : my string data for test
bool data is : 1
- 1. 검출
- 2. 검출
- 3. 검출
- 4. 검출
- 5. JavaCV에서 얼굴 검출
- 6. 검출 애니메이션
- 7. 그룹 검출
- 8. 검출 활동은
- 9. 윤곽 검출
- 10. 배열 검출
- 11. Dlib를 실행하는 동안 잘못된 명령 (코어 덤프 됨) 얼굴 검출
- 12. iOS 얼굴 검출 있음
- 13. .NET에서 -301 DB2 오류 검출
- 14. 정규식은 마지막에 검출 된
- 15. 검출 끝 자바 스크립트
- 16. 검출 재귀 적 속성
- 17. 교차 사분면 검출?
- 18. 검출 개방 WiFi 네트워크
- 19. 좌표 검출 기록
- 20. Qt와 opencv에서 얼굴 검출
- 21. bipartite 그래프를 검출
- 22. 원형 충돌 검출
- 23. 검출 열 - 알고리즘
- 24. 검출 전화 방향은
- 25. feof 파일의 거짓말 검출
- 26. 역광 장면에서의 얼굴 검출
- 27. 검출 워드 문서 테이블
- 28. 에지 검출 기법
- 29. 물체 검출 + 세그먼테이션
- 30. 얼굴 검출 + 이미지 모핑
또한 '무효 메인 허용 오래된 컴파일러 수도()'. (실제로는 아니지만 왜 그렇게 널리 퍼져 있습니까?) – StoryTeller