1 2 aaa
이런식으로 하고
1과 2는 int 형에 >> 리디렉션으로 받고
3은 getline(tmp, 1000, "\n") 을 받으면 aaa이 tmp에 안 받아집니다.
왜 그런지 설명좀 해주세요.
2 까지 받고 나서 '\n' 이 제거 되지 않았습니다. ignore 등으로 날리세요.
in.ignore(100, '\n');
간편하게 읽어 들일 때 string 을 이용할 수 도 있습니다.
ifstream is("somedata"); if(is) { string buf; getline(is, buf); const int a = strtol(buf.c_str(), 0, 10); getline(is, buf); const int b = strtol(buf.c_str(), 0, 10); getline(is, buf); }
그런데 문제가
1 2 3 4 5 6 7 1 2 3 4 5 6 7 이런식이 된다면 token 을 해서 처리를 해야 하는데... 조금만 응용하면 될거 같은데 많이 해매네요 ㅜㅜ 얼핏 string 클래스를 쉽게 token 하는 함수가 있다고 들었는데.. 못 찾겠습니다.
조금만 더 도와주세요.
1%의 가능성이면 충분하다! 최선을 다하자!
stringstream 이란 놈이 재미난 일을 해줍니다.
sstream 헤더 인클루드 하시고 istringstream, ostringstream 등
으로 string을 stream 처럼 쓸 수 있습니다.
const string input = "1 2 3 4 5 6 7"; istringstream ist(input); int inputNumber; while(ist >> inputNumber) { cout << inputNumber << '\n'; }
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
2 까지 받고 나서 '\n'
2 까지 받고 나서 '\n' 이 제거 되지 않았습니다. ignore 등으로 날리세요.
간편하게 읽어 들일 때 string 을 이용할 수 도 있습니다.
ifstream
이 구조 괜찮네요 ^^ 고맙습니다.
그런데 문제가
1 2 3 4 5 6 7
1 2 3 4 5 6 7
이런식이 된다면 token 을 해서 처리를 해야 하는데...
조금만 응용하면 될거 같은데 많이 해매네요 ㅜㅜ
얼핏 string 클래스를 쉽게 token 하는 함수가 있다고 들었는데.. 못 찾겠습니다.
조금만 더 도와주세요.
1%의 가능성이면 충분하다!
최선을 다하자!
stringstream 이란 놈이
stringstream 이란 놈이 재미난 일을 해줍니다.
sstream 헤더 인클루드 하시고 istringstream, ostringstream 등
으로 string을 stream 처럼 쓸 수 있습니다.
댓글 달기