std :: array 대신 std :: vector를 사용하는 데 한 가지 문제가 있습니다. 대부분의 사람들은 메모리 할당 방법 (배열은 메모리를 정적으로 할당하고 벡터는 메모리를 동적으로 할당 함)을 제외하고 같은 목적으로 사용한다고 말합니다. 내 이해를 분명히하기 위해 나는 무언가를 시도했지만 실패했다.프로그래밍에서 사용할 배열과 벡터 차이점
배열을 사용하여 코드를 실행하고 있었지만 정상적으로 작동했습니다.
char userInput[MAX_DATA] = { '\0' };
std::cout<<"\enter some char: ";
std::cin.getline(userInput, MAX_DATA);
int bytes_sent = send(socketFD, userInput, strlen(userInput), 0);
//send function definition send(__in SOCKET s, __in_bcount(len) const char FAR * buf, __in int len, __in int flags);
벡터를 사용하여 I에 의해 대신에 정의 된 코드 위에 내 코드 라인을 변경 :
std::vector<char> userbuffer;
std::cout<<"\enter some char: ";
cin>>input;// i only want to send only the data i entered here in run time.
int bytes_sent = send(socketFD, userbuffer, userbuffer.size(), 0);
//error C2664: 'send' : cannot convert parameter 2 from 'std::vector<_Ty>' to 'const char* '
전 C++의 STL의 개념에 정말 새로운입니다. 누군가 내가 뭘 잘못하고 있는지 찾아 낼 수있게 도와 줄 수 있습니까? 내 의도는 동적 메모리 할당을 보는 것입니다.
당신을 감사합니다! 그 때문에 런타임 오류가 발생했으나 다음과 같이 수정했습니다. – User
그리고 첫 번째 버전에서는 if (std :: cin.fail())을 사용 했으므로 문제가 없었습니다. 두 번째 버전에서는 문제가있었습니다. – User