2012-10-09 4 views
-1

부호없는 짧은 배열에 문자열을 입력해야합니다. 나는 iostream.h 헤더를 포함했다C++에서 부호없는 짧은 배열에 문자열 입력

unsigned short strFile [ 200 ] = {0}; 
cin >> strFile; 

:

여기 내 구현입니다.

그러나 나는 항상 오류 얻을 :

error C2678: binary '>>' : no operator found which takes a left-hand operand of type 'std::istream'

누구 내가이 문제를 해결하는 방법을 알고 있습니까?

+3

'표준 : string'를 사용하지 않는 어떤 특별한 이유? – Vikas

+0

std :: wstring 기본적으로 서명되지 않은 짧은 배열 아닌가요? 'std :: wstring x; std :: getline (std :: wcin, x);'? – stijn

+0

@stijn : 아니요. std :: wstring은'wchar_t' 배열입니다. 'wchar_t'는 C++ 표준에 의해 구별 된 타입이어야합니다. C에서는 'unsigned short'로 typedef 될 수 있지만 C++에서는 그렇지 않을 수도 있습니다. –

답변

3

unsigned short[]과 호환되는 문자열이 없습니다.

(당신은 항상 상수를 제외하고 string에 보관해야 ++! C에서) char [] 정상적인 문자열과 넓은 문자열이있다, 즉 (C에서 당신은 항상 wstring에 보관해야 ++) wchar_t[]이다. 그리고 C++ 11은 char16_tchar32_t 그리고 그에 대응하는 u16stringu32string을 추가합니다.

일반적인 입력 스트림 (예 : cin)에서 일반 문자열을 읽을 수 있습니다. 넓은 문자열 처럼 입력 스트림을 읽을 수 있습니다.

wchar_t은 C에서 typedef에서 unsigned short으로 사용되지만 C++에서는 별도의 형식이어야합니다. ISO/IEC 14882 : 2003 3.9.1/5 :

Type wchar_t is a distinct type whose values can represent distinct codes for all members of the largest extended character set specified among the supported locales (22.1.1).

+0

'unsigned short *'는 WinAPI에서 여전히 사용됩니다. 'SEC_WINNT_AUTH_IDENTITY' 구조체에 있습니다. – BartoszKP

관련 문제