공간

2016-12-17 7 views
0

나는 지금 내가 사용자가 파일 brain.txt에 말한다 무엇 이건 쓸 수있는 로봇 기능이공간

++ C의 작은 채팅 봇 프로그램을 쓰고 있어요 전에 문자열의 모든 부분을 무시하고 배치 번호가 기억 된 순서대로 파일에 표시됩니다. 계속해서 사용자 입력 Grapefruit을 입력하면 새 줄에 자몽을 넣고 접두사로 6을 넣습니다. 내가 에 필요한 문제로 실행했습니다

0 suspect 
1 interest 
2 underwood 
3 interior 
4 bullet 
5 dog 

는 봇 이미 이전 UserInput 사용자 년대있는 메모리 UserInput 사용자를 비교합니다.

ifstream brain ("projects/AI/brain.txt"); 
if (brain.is_open()) 
{ 
    while (getline(brain,memory)) 
    { 
     cout << "memory: " << memory << endl; 
     cout << "userinput: " << userinput << endl; 
     if (memory == userinput) 
      { 
       exists = true; 
       //if it exists, tell the user, and break 
       cout << "I know that already!" << endl; 
       break; 
      } 
     else { filepos++; } 

는 UserInput 사용자들은 동일한 문자열하지 않은대로, 비교 검사가 실패 두 가지를 비교하는 경우 grapefruit 로봇의 메모리가 ERGO을 6 grapefruit이다 있었다면.

숫자를 문자열의 일부로 유지하고 읽고 싶은 문자열의 부분을 선택적으로 선택할 수있게하고 싶습니다. 나중에 JSON 또는 비슷한 것으로 업그레이드 할 수도 있지만, 지금 당장이 방법을 사용하고 싶습니다.

  • 내 첫 번째 질문은 공간의 끝까지 모든 문자열을 어떻게 무시할 수 있습니까? 그래서 내 프로그램이 제대로 grapefruit 비교하고 grapefruit 대신

  • 내 두 번째 질문은 6 grapefruit의 내가 여러 공간을 생략하고 여러 공간이 경과 한 후에 만 ​​읽을 수 있도록,이 기능을 확장 할 수 있습니다? 문자열의 예를 들어

: 6 나가 수 (53)에 액세스하려면 23 53 12 자몽, 그리고 아무것도.

이 방법을 개선하는 방법과 제가 잘못했을 수도 있습니다.

나는이를 프로그램 시작시 런타임에 튜플 또는 다른 어떤 것의 벡터라고 말할 수 있었고 파일에서 액세스하지 못하게 할 수있었습니다. 이것은 내가 미래에 할 수있는 일입니다.

+0

읽기 2 문자열과이 환상적으로 잘 작동 처음 –

답변

0

문자열이 std : string 개체에 저장되어 있으면 find 메서드()를 사용하여 메모리 문자열에 포함 된 입력 문자열을 확인할 수 있습니다.

http://en.cppreference.com/w/cpp/string/basic_string/find

if (memory.find(userinput) != std::string::npos) 
{ 
       exists = true; 
       //if it exists, tell the user, and break 
       cout << "I know that already!" << endl; 
       break; 
} 

표준 : : 문자열 : 비영리 단체가이 경우에 일치하는 문자열의 끝 이전에 발견되지 않았 음을 의미하는 특수 문자로 정의됩니다.

http://en.cppreference.com/w/cpp/string/basic_string/npos

+0

을 버리고, 그래서 당신을 감사합니다, 로봇은 지금은 brain.txt의에 두 일치하지 않습니다 문자열을 다시 추가하는 것이 이해합니다. string :: npos에서 조금 더 자세히 설명해 주시겠습니까? 어떻게 작동하는지 모르겠습니다. –

+0

그러나 string :: npos에 대해 조금 더 자세히 설명해 주시겠습니까? 어떻게 작동하는지 모르겠다. 나는 코드를 이해하는 것을 좋아한다. 앞으로도 이와 같은 문자열을 분리하지 않고도이를 달성 할 수있는 더 좋은 방법을 알고 계십니까? 감사합니다. –

+0

@StrayJay 나중에 문자열 표현을 파일에 보관할 수 있지만 메모리에로드 할 때 번호가 별도의 필드에 저장되도록 형식을 지정하는 것이 좋습니다. 각 레코드에 데이터 요소를 더 추가하면 구조를 확장 할 수 있습니다. –