C나 C++이라면 없습니다.
공백으로 구분해서 (strtok_r 등등 ) 직접 써주거나 (strncpy)
혹은 문자열 함수 조합에 따라 여러가지 방법이 있겠군요.
제 생각에는 루프돌면서 공백이 나올때마다
이차원 배열을 증가시켜 주면서 한 바이트씩 입력하는게 쉬울것 같군요.
글쎄요... 단지 공백(whitespace)만으로 구분할 때는 strtok()을 쓸 필요도 없습니다.
C에서는 sscanf(), C++에서는 istream::opeartor<<()와 istringstream 만으로 충분하지요.
ANSI C++의 STL의 istream_iterator를 사용하면 루프를 사용할 필요없이
다음과 같이 함수 호출의 형태로 쓸 수도 있습니다.
파이썬보다 많이 복잡하지는 않죠. ^^;
없습니다
C나 C++이라면 없습니다.
공백으로 구분해서 (strtok_r 등등 ) 직접 써주거나 (strncpy)
혹은 문자열 함수 조합에 따라 여러가지 방법이 있겠군요.
제 생각에는 루프돌면서 공백이 나올때마다
이차원 배열을 증가시켜 주면서 한 바이트씩 입력하는게 쉬울것 같군요.
spam = "안녕 하세요. 저는 바보에요. ^^;".split(&qu
python에선 제목처럼 간단한데.. ㅋㅋ
c 라면 윗분말씀대로 루프돌리는게 작성도 쉽고 확장도 쉽고.. :)
[quote="errai"]C나 C++이라면 없습니다.공백으로 구
글쎄요... 단지 공백(whitespace)만으로 구분할 때는 strtok()을 쓸 필요도 없습니다.
C에서는 sscanf(), C++에서는 istream::opeartor<<()와 istringstream 만으로 충분하지요.
ANSI C++의 STL의 istream_iterator를 사용하면 루프를 사용할 필요없이
다음과 같이 함수 호출의 형태로 쓸 수도 있습니다.
파이썬보다 많이 복잡하지는 않죠. ^^;
#include <iostream> #include <sstream> #include <iterator> #include <vector> using namespace std; int main() { istringstream is("안녕하세요 저는 바보에요 ㅜㅜ"); vector<string> v; copy(istream_iterator<string>(is), istream_iterator<string>(), back_inserter(v)); copy(v.begin(), v.end(), ostream_iterator<string>(cout, "\n")); }음냐. 참고가 될련지?
음냐. 참고가 될까 해서 소스을 하나 붙입니다. 시간을 구해서...시간의 각각의
구별자가 스페이스이기 때문에 스페이스을 이용해서 나눈것의 예입니다.
#include <stdio.h> #include <string.h> #include <time.h> int main() { char buf[32]; char delims[] = {0x20, 0x20, 0x20, 0x20, 0x20}; /* 0x20 == space */ char *token; time_t ltime; struct tm *newtime; time(<ime); newtime = localtime(<ime); snprintf(buf, 32, asctime(newtime)); token = strtok(buf, delims); while(token != NULL) { printf("|%s|", token); token = strtok(NULL, delims); } return(0); } [hurryon@ns2 0320]$ gcc -o 4 4.c [hurryon@ns2 0320]$ ./4 |Thu||Mar||20||13:21:28||2003 |[hurryon@ns2 0320]$여기서 주의해서 보아야 할것은 문자열의 마지막에 자동으로 들어가 있는 \n 이다.
\n 이 들어 가 있기 때문에 마지막의 | 는 \n 이 나온 이후에 출력이 되었다.
Java라면 StringTokenizer class를 쓰시면 됩니다.
Java라면 StringTokenizer class를 쓰시면 됩니다.
댓글 달기