이미경 님이 쓰신 글 :
: 안녕하세요...
: c를 정말루.. 처음 사용하는 회사원입니다.
: 너무 몰라서.. 부끄럽지만.. 질문 드립니다..
:
: 인수가.. xxx/yyy/zzz 라는 형태로.. 들어옵니다..
: 그 인수에서 yyy라는 것을 뽑아내어야 하는데..
: 자바 같으면.. 쉽게 되는데.. c언어는 보니까..
: 메소드가.. 그냥.. 제공되는 거 같지는 않네요..
C++은 그런 메소드가 물론 그냥 제공됩니다.
: 지금.. 겨우 짜본 것이..
:
: ------------------------------------------------
: #include <stdio.h>
: #include <string.h>
:
: void main(int argc, char *argv[])
: {
:
: char str[100];
: strcpy(str, argv[1]);
: printf("%s", str);
:
: char* index;
: char delimiter = '/';
:
: index = strchr(str, delimiter);
: printf("XX : %s", index);
: }
: ------------------------------------------------
:
: 요까지인데.. 인수로는 xxx/yyy/zzz를 넣었더니 결과가 /yyy/zzz가 나왔습니다.
: 담부터 어떻게 해야할지.. 인수에서 처음 나오는 /의 인덱스를 얻으려니.. 그런 함수도 없고..
find()와 rfind() 메소드를 쓰면 됩니다.
//---------------------------------------------------------------------------
#include <iostream>
#include <string>
//---------------------------------------------------------------------------
using namespace std; // 자바의 import java.lang.*; 과 비슷한 의미
int main() // void main()이 아닙니다! 이건 C++뿐만아니라 C에서도 표준이 아닙니다.
{
string input;
cin >> input;
const char delimiter = '/';
string center(input.begin() + input.find(delimiter) + 1,
input.begin() + input.rfind(delimiter));
// string의 생성자 중 iterator를 인수로 받는 것을 이용한 문장:
// ANSI C++ STL의 iterator는 자바 Collection 라이브러리의
// Iterator와 유사하나 훨씬 강력한 기능을 제공합니다.
cout << center << endl;
// 대신 return 0;은 없어도 됩니다.
}
//---------------------------------------------------------------------------
만약 좀 더 복잡한 형태의 토크나이즈가 필요하다면 제가 쓴 다음 글을 참고하세요.
http://www.borlandforum.com/impboard/impboard.dll?action=read&db=cpp_tip&no=13