'유효성 검사'가 항상 true 인 경우 수신 할 인바운드 데이터를 삭제해도 비어있는 상태로 유지됩니다. cout 문을 사용하면 안됩니다.if (! buydat.empty()) 유효성 검사가 실패하면 true (항상 true)
코드 :
void buymngr(){
vector<std::string> buydat;
vector<std::string> markdat;
vector<std::string> pricedat;
buydat = getmyData();
if(!buydat.empty()){
cout << "You 'do' have buy string match data!" << endl;
}
그것은 데이터를
getmyData를 얻기위한 담당하는 기능 getmyData를 호출이 :
vector<string> getmyData()
{
FILE *mydfp = popen("php getMyorders.php", "r");
if (mydfp == NULL) perror ("Error opening file");
char mydbuff[BUFSIZ];
vector<string> vrecords;
while(fgets(mydbuff, sizeof(mydbuff), mydfp) != NULL){
size_t n = strlen(mydbuff);
//clean '\0' from fgets
if (n && mydbuff[n - 1] == '\n') mydbuff[n - 1] = '\0';
if (mydbuff[0] != '\0') vrecords.push_back(mydbuff);
}
cout << "I got my own data" << endl;
return vrecords;
}
코드가 합법적으로 '진실', 그것은 잘 실행 모든 기능을 정상적으로 수행합니다. 하지만 false로 만들면 여전히 true 및 세그먼트 결함 (gdb는 특정 라인을 가리 키지 않지만 오류는 실제로는 존재하지 않는 유효한 데이터를 처리하려고 시도하는 것처럼 보임)의 유효성을 검사합니다.
'벡터 '를 지우기 위해 무엇을 사용하고 있습니까? ['clear()'] 했습니까 (http://en.cppreference.com/w/cpp/container/vector/clear)? – IllusiveBrian
벡터를 지우려고하지 않습니다. – mine
오해가 아니라면, 빈 벡터에 대한'! buydat.empty()'의 테스트 케이스가 테스트를 위해 벡터를 지운 후에도 true를 반환한다고 말했습니까? 모든 벡터 데이터를 지우는 방법에 문제가있을 수 있습니다. 왜냐하면 나는'empty()'에 문제가 없다고 확신하기 때문입니다. – IllusiveBrian