2013-08-18 3 views
0

저는 C++을 배우기 시작했고 문자열에 대해 다소 혼란 스럽습니다. 먼저 입력 단어가 필요하며 모든 단일 문자를 char-Array의 특정 위치에 저장하십시오. 그러나 문자열은 기본적으로 char-Array입니다. 그렇지 않습니까? 이 작품 반면C++ 문자열 단일 문자

char word[]; 
cin >> word[]; 

을하지만 난 배열로 문자를 입력하는 방법을 잘 모릅니다 : 하지만이 작동하지 않습니다.

string s; 
cin >> s; 

지금까지이 시도했지만, 나는 컴파일 오류가있어 : 미안, 난 그냥 프로그래밍을 시작했습니다 그리고 난이 사람이 나를 위해 몇 가지 조언이 있는지 궁금

string s; 
cin >> s; 
char word[] = s; 

을 :)

+2

왜's' 문자열을 사용하지 않으시겠습니까? 'char' 배열의 목적은 무엇입니까? – juanchopanza

+0

@juanchopanza "나는 C++을 배우기 시작했다."기억의 기초와 기본에서 망치질 가능성이있는 학습 연습 –

+0

'std :: string'은 라이브러리 클래스입니다. 배열은 내장 된 유형으로 많은 기능이 내장되어 있지 않습니다. – chris

답변

0
char word[]; 

배열의 크기를 지정해야합니다. 그런 다음 직접 입력 할 수 있습니다. 문자 배열에 std::string을 복사하려면 strncpy과 같은 안전한 문자열 복사 기능을 사용해야합니다.

char word[10]; 
std::string str("Hello"); 

strncpy(word, str.c_str(), sizeof(word)); 

그러나, std::string는 C++에서가 아니라 문자 배열을 사용하기보다 권장 - 예를 들면.

+0

배열 크기가 10이고'string'이 5 문자를 가지고 있기 때문에'strncpy'가 필요 없습니다. 'strncpy'를 사용한다면 ** 유효한 문자열을 생성했는지 확인해야합니다. 종료 문자 ''\ 0 '을 제외하고 소스 문자열이 대상 배열을 채우기에 충분한 문자를 가지고 있으면 결과에''\ 0 ''이 종료되지 않습니다. 블라인드 어레이를 사용하면 문제가 발생할 수 있습니다. –

+1

예 (이 예) 하지만 OP에서 문자열 안전 복사 기능을 사용하기를 원합니다. – Mahesh

+0

어깨를 으.. 그것을 필요로하는 이유를 설명하고 그것을 올바르게 사용하는 예를 적는다. "안전"기능을 사용한다고해서 귀하를 올바르게 사용하지 않으면 귀하 또는 다른 사람에게 이익이되지 않습니다. –