int 형을 char 형으로 변환하는 가장 쉬운 방법

**단 buf가 적절한 크기어야함
sprintf(buf,"%d",i);

아..sprintf 님 만세..
그 외에도 sprintf는 형식 지정 문자열 만들때 디게 편함 ㅋ

'devel > man & example' 카테고리의 다른 글

scanf에서 fflush(stdin) 사용 안하고 \n 파싱해서 없애기  (2) 2011.11.27
function pointer  (0) 2009.11.24
C++ , C File OUTPUT e.g.  (0) 2008.12.02
String Parsing  (0) 2008.05.25
bit shift e.g. , 2dim matrix, Defed Func  (0) 2007.05.01
Posted by 쵸코케키

2009. 10. 17. 12:37 devel/etc

Makefile 쉬운 예제

CLiENT = commonFuncs.o crawlFunc.o crawlclient.o
LDNS = commonFuncs.o localDNS.o localDNSmain.o


commonFuncs.o : commonFuncs.h commonFuncs.c
    gcc -c commonFuncs.c
                                   
crawlFunc.o : crawlFunc.h crawlFunc.c
    gcc -c crawlFunc.c

crawlclient : crawlclient.c
    gcc -c crawlclient.c

localDNS.o : localDNS.o localDNS.c
    gcc -c localDNS.c

mydotcomDNS.o : mydotcomDNS.h mydotcomDNS.c
    gcc -c mydotcomDNS.c

gTLDcom.o : gTLDcom.h gTLDcom.c
    gcc -c gTLDcom.c



cl: $(CLiENT)
    gcc -o ccl $(CLiENT)

ld: $(LDNS)
    gcc -o ldns $(LDNS)

rdn:
        gcc myrootDNS.c -o rdns

gtld:
    gcc gTLDcom.c -o gtld

mdk:     
    gcc mydotcomDNS.c -o dcdn


all:
    $(MAKE) cl
    $(MAKE) ld
    $(MAKE) rdn
    $(MAKE) mdk
    $(MAKE) gtld




clean:
    rm -f *.o
clear



c++ 하다보면 까먹는단 말야 -.-;

'devel > etc' 카테고리의 다른 글

c++ int to string  (0) 2010.06.22
Visual Studio 2005, 2008 에서 OPEN GL 사용하기  (0) 2010.05.16
윤드림훃의 주옥같은 글  (0) 2009.10.17
Debug Mode - Enable  (0) 2009.01.02
simple fgets source code  (0) 2008.12.02
Posted by 쵸코케키
는 개와 고양이 같다라는 얘기를 많이 해.
기획자는 개 개발자는 고양이.
기획자는 개새끼 개발자는 고양이새끼 ?

둘이 맨날 투닥거리는 이유에 대해서 생각해 볼까해.

일단 기획자얘들은 집단극화가 일상적으로 벌어지는 집단이야. 원래 아이디어는 무궁무진하고 물리적 제한을 받지 않잖아.
거기다가 혼자서 생각할적에는 매우 어렵게 생각되던 기능 도, 여럿이 머리를 맞대면 굉장히 쉬워보이는 효과가 생겨.
왜 그런거 있잖아. 들어갈때는 똥누러 가는 마음이였는데, 서로서로 으쌰으쌰 하다보니까. 어느덧 파티장으로 바뀌는 거. 세상 모든게 내것 같고,
모든걸 다 구현할 수 있을거 같고 다 잘될거 같지. 아싸!! 하면된다...
이걸 집단극화라고 하는데, 이거 땜에 기획자들끼리 기획하면 비합리적인 일정과 기능추가가 이루어지는게 다반사다.
거기에 팀장이 그러한 마인드라면 정말 두손 두발 들게 되지.

이게 기획서라고 떡하니 넘어오면, 개발자는 황당하지.
온갖부정적인 단어의 향연이 벌어진단 말이야. 이건 이래서 안되고 저건 저래서 안되고 그건 그래서 안되고.
마찬가지로 개발자들도 집단극화 현상이 벌어질 수 있다. 이경우 기획자와는 반대 방향의 집단극화가 발생하는 거지.
글고 개발자들은 다른 대안이 있는 것 같아도, 일단 그걸 숨기는 경향이 있지. 왜 ? 개발자는 근본적으로 땜빵스러운걸 싫어 하거든. 땜빵하는거 치고 문제 안생기는 경우가 별로 없기도 하고..
그래서 저것도 안되고 이것도 안되고 그것도 안된다고 한다.

이제 최초 기획서를 누더기로 만들어서 기획팀이랑 얘기를 한다. 당연히 한판 붙게 되어있다. 기획자들 딴에는 졸라 개고생해서 만든 기획서를 누더기로 만든거니 열받고, 개발자는 개발자대로 우리가 슈퍼일개미삼? 이런 엿같은 기분인거고.
이 때 팀장의 역할이 중요한데, 일반적으로 팀장은 기획자와 함께 집단극화를 경험한 경우가 많기 때문에 기획자들의 편이 되어서 결정하게 되는 경향이 많다. 뭔가 잘못되었다는 것은 날밤을 세고 드디어 "일정역산"이라는 걸 하게 되면서 슬슬 느끼게 되지만 루비콘강을 건넌 뒤지.

팀장은 이러한 집단 커뮤니케이션의 특성을 이해하고 있어야 한다. 그래서, 집단극화가 되지 않도록 중재하는 역할을 해야 한다. 예컨데 기획팀 회의에 들어 간경우 부정적의견을 내는 역할을 자청해야 한다. 그게 정말 쓸만한 기능이니 ? 좋은 기능이긴 한데 이상적인 기능 아니니 ? 이런거지. 으샤 으쌰 한달안에 다 끝내자 파이팅 하는게 팀장의 역할이 아니란 거야. 반대로 개발팀 회의에 들어가서는 긍정적 시그널을 보내는 역할을 자청해야 한다. 이러이러한 심플한 다른 대안들도 있는데 한번 고려해 보죠.!! 이를테면 다들 예 하는데 아니오 라고 맨트한번 던져주는게 팀장의 역할이라는 거지.

글 고 팀을 구성할때, 개발팀을 기획팀보다 2~2.5배 정도 크게 만들어라. 업무가 밑으로 내려가면 그 복잡도가 증가한는 경우가 대부분이다. 기획자 2명이 생각하는 복잡도라는 것은 실제 개발자들이 일을 하게 되면 4배 이상의 복잡도가 된다는 거지.
복잡 도가 늘어나면 어떻게 해결해야 하지 ? 상호 커뮤니케이션으로 해결할 수 밖에 없다. 상호 커뮤니케이션이 원할하려면 각 개발자에게 어느정도의 여유시간이 주어져야 한다. 여유시간이 주어질려면 합리적인 일정, 충분한 수의 개발자가 필요한거지.
물론 이러한 상호커뮤니케이션 없이도 제품은 만들어질 수 있다. 하긴 이런 커뮤니케이션을 시간낭비라고 생각하는 얘들도 있긴 하더구나. 이럴 경우 협업을 해야 하는 부분이 빵하고 터지고, 막판에 땜빵 프로젝트가 되기 시작하는 거다. 개발자에게 시간적 여유를 주어야 한다는 것은 생각의 리프레쉬 같은거 외에도 원할한 협업을 위한 것이기도 하다는걸 이해하고 있어야 한다는 얘기다.

'devel > etc' 카테고리의 다른 글

Visual Studio 2005, 2008 에서 OPEN GL 사용하기  (0) 2010.05.16
Makefile 쉬운 예제  (1) 2009.10.17
Debug Mode - Enable  (0) 2009.01.02
simple fgets source code  (0) 2008.12.02
File To String in C++  (0) 2008.05.27
Posted by 쵸코케키

순위

연산자

결합순서

1

( ) [ ] -> .

왼쪽 우선

2

! ~ ++ -- + -(부호) *(포인터) & sizeof 캐스트

오른쪽 우선

3

*(곱셈) / %

왼쪽 우선

4

+ -(덧셈, 뺄셈)

왼쪽 우선

5

<< >>

왼쪽 우선

6

< <= > >=

왼쪽 우선

7

== !=

왼쪽 우선

8

&

왼쪽 우선

9

^

왼쪽 우선

10

|

왼쪽 우선

11

&&

왼쪽 우선

12

||

왼쪽 우선

13

? :

오른쪽 우선

14

= 복합대입

오른쪽 우선

15

,

왼쪽 우선



아우 짱나게 자꾸 헷갈리는 부분이 있다







더블 포인터를 사용해야하는 경우

함수 밖에서 pointer 형 변수를 함수로 넘긴다음에
그 변수의 내용을 고쳐서 함수 밖에서 다시 써야할 경우
~_~


예시

  1 #include <stdio.h>
  2 #include <string.h>
  3
  4
  5 void r(const char*,char*,int*);
  6 int main(int argc, char* argv[]){
  7
  8 char* tmp = "203.249.75.13 10321";
  9 char* ip;
 10 int pt;
 11
 12 r(tmp,ip,&pt);
 13
 14
 15     printf("%s, %d\n",ip, pt);
 16     return 0;}
 17
 18
 19
 20     void r(const char* data, char* ip, int* pt){
 21
 22 int i;
 23 for(i=0; data[i] != 0 ; i++){
 24         if(data[i] == ' ') {
 25         ip = (char*) malloc(sizeof(char)*(i+1));
 26         strncpy(ip,data,i);
 27         ip[i] = 0;
 28                                                                            
 29 *pt = atoi(&(data[i+1]));
 30 break;
 31                                                                                             }
 32         }
 33
 34         printf("%s, %d\n",ip, pt);
 35
 36     }
~

 

'devel > 개념' 카테고리의 다른 글

헤더파일 전역변수 중복 오류  (0) 2016.04.21
EAS(Energy-Aware Scheduler) 스케쥴러 정리  (0) 2016.03.24
para virtualization vs full virtualization  (0) 2013.08.21
HTTP - Stateless Protocol  (0) 2011.08.10
TCP vs UDP  (0) 2011.05.04
Posted by 쵸코케키

2009. 1. 2. 11:46 devel/etc

Debug Mode - Enable



구성 속성 -> 링커 -> 디버깅 -> 디버그 정보 생성 : 예(/DEBUG)
구성 속성 -> C/C++ -> 일반 -> 디버깅 정보 형식 -> 편집하며 계속하기를 위한 프로그램 데이터베이스(/ZI)
구성 속성 -> C/C++ -> 최적화 -> 최적화 : 사용 안 함(/Od)  





http://support.microsoft.com/kb/198953
watch 창에 "포인터 변수 이름,숫자"



char* ptr="abcdefg"; 가 있을 때 watch 창에 "ptr,5"라고 쓰면 a,b,c,d,e가 들어있는 5칸짜리 배열로 보여

continue하면 반복문의 처음으로 가게됨
ex> whlie
         a
for(c++)
b continue;


c가 ++되고 b출력되면서 계속 반복
a는 초기1회밖에

'devel > etc' 카테고리의 다른 글

Makefile 쉬운 예제  (1) 2009.10.17
윤드림훃의 주옥같은 글  (0) 2009.10.17
simple fgets source code  (0) 2008.12.02
File To String in C++  (0) 2008.05.27
class member 접근과 클래스 내에서 클래스 선언해서 쓰기  (0) 2007.04.26
Posted by 쵸코케키


///////////
★★★C method 1
///////////
#include <stdio.h>
#include <stdlib.h>

#define INPUT_FILE_1 "hw1_in1"
#define OUTPUT_FILE_1 "hw1_out1"

void ReadFile();
void WriteFile();
void ParseLine(char * pLineBuf);

int main()
{

 printf("\n\n");
 printf("%s : file read\n", INPUT_FILE_1);
 printf("====================================\n");
 
 ReadFile();
 
 printf("\n\n");
 printf("%s : file write\n", OUTPUT_FILE_1);
 printf("====================================\n");
 
 WriteFile();

 printf("\n\n");
 return 0;
}

void ReadFile()
{
 char buf[256];
 FILE * fp;

 fp = fopen(INPUT_FILE_1, "r");
 
 if (fp == NULL)
 {
  printf("%s file open error\n", INPUT_FILE_1);
  exit(0);
 }

 while(!feof(fp))
 {
  fgets(buf, sizeof(buf), fp);

  ParseLine(buf);
 }
 
 fclose(fp);
}

void WriteFile()
{
 int i;
 float f;
 char buf[256];
 FILE * fp;

 fp = fopen(OUTPUT_FILE_1, "w");
 
 if (fp == NULL)
 {
  printf("%s file open error\n", INPUT_FILE_1);
  exit(0);
 }

 fprintf(fp, "---------------------------------\n");
 fprintf(fp, " %s file write test\n", OUTPUT_FILE_1);
 fprintf(fp, "---------------------------------\n");
 
 f = 0.0;
 
 for (i = 0; i < 5; i++)
 {
  fprintf(fp, " %.2f\t%.2f\t%.2f\n", f + 1, f + 1, f + 1);
  f++;
 }
 
 fclose(fp);
}


// 이 함수에서 파싱을 합니다
void ParseLine(char * pLineBuf)
{
 printf("%s", pLineBuf);

}


C++
http://www.cplusplus.com/reference/iostream/ifstream/open.html

this is reference and easy to use

#include

ofstream output;
output.open("filename" ios::out | ios::trunc);


if(output.is_open())
output << "anything if you wanna";

 

'devel > man & example' 카테고리의 다른 글

scanf에서 fflush(stdin) 사용 안하고 \n 파싱해서 없애기  (2) 2011.11.27
function pointer  (0) 2009.11.24
sprintf int to ascii  (0) 2009.11.08
String Parsing  (0) 2008.05.25
bit shift e.g. , 2dim matrix, Defed Func  (0) 2007.05.01
Posted by 쵸코케키

2008. 12. 2. 15:28 devel/etc

simple fgets source code

/*-
 * Copyright (c) 1990, 1993
 * The Regents of the University of California.  All rights reserved.
 *
 * This code is derived from software contributed to Berkeley by
 * Chris Torek.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 4. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 */

#if defined(LIBC_SCCS) && !defined(lint)
static char sccsid[] = "@(#)fgets.c 8.2 (Berkeley) 12/22/93";
#endif /* LIBC_SCCS and not lint */
#include <sys/cdefs.h>
__FBSDID("$FreeBSD: src/lib/libc/stdio/fgets.c,v 1.14 2007/01/09 00:28:06 imp Exp $");

#include "namespace.h"
#include <stdio.h>
#include <string.h>
#include "un-namespace.h"
#include "local.h"
#include "libc_private.h"

/*
 * Read at most n-1 characters from the given file.
 * Stop when a newline has been read, or the count runs out.
 * Return first argument, or NULL if no characters were read.
 */

char *
fgets(buf, n, fp)
 char *buf;
 int n;
 FILE *fp;
{
 size_t len;
 char *s;
 unsigned char *p, *t;

 if (n <= 0)  /* sanity check */
  return (NULL);

 FLOCKFILE(fp);
 ORIENT(fp, -1);
 s = buf;
 n--;   /* leave space for NUL */
 while (n != 0) {
  /*
   * If the buffer is empty, refill it.
   */
  if ((len = fp->_r) <= 0) {
   if (__srefill(fp)) {
    /* EOF/error: stop with partial or no line */
    if (s == buf) {
     FUNLOCKFILE(fp);
     return (NULL);
    }
    break;
   }
   len = fp->_r;
  }
  p = fp->_p;

  /*
   * Scan through at most n bytes of the current buffer,
   * looking for '\n'.  If found, copy up to and including
   * newline, and stop.  Otherwise, copy entire chunk
   * and loop.
   */

  if (len > n)
   len = n;
  t = memchr((void *)p, '\n', len);
  if (t != NULL) {
   len = ++t - p;
   fp->_r -= len;
   fp->_p = t;
   (void)memcpy((void *)s, (void *)p, len);
   s[len] = 0;
   FUNLOCKFILE(fp);
   return (buf);
  }
  fp->_r -= len;
  fp->_p += len;
  (void)memcpy((void *)s, (void *)p, len);
  s += len;
  n -= len;
 }
 *s = 0;
 FUNLOCKFILE(fp);
 return (buf);
}

'devel > etc' 카테고리의 다른 글

Makefile 쉬운 예제  (1) 2009.10.17
윤드림훃의 주옥같은 글  (0) 2009.10.17
Debug Mode - Enable  (0) 2009.01.02
File To String in C++  (0) 2008.05.27
class member 접근과 클래스 내에서 클래스 선언해서 쓰기  (0) 2007.04.26
Posted by 쵸코케키

2008. 11. 29. 09:41 devel

Sprintf part1




설명

메모리 영역으로 서식에 맞추어 출력합니다. 아래의 서식 변환 문자열을 참고하십시오.

변환 문자열 의미
%o 8진 정수 형식으로 출력
%d 10진 정수 형식으로 출력
%ld long형 10진 정수 형식으로 출력
%x 16진 정수 형식으로 출력
%u 부호 없는 10진 정수 형식으로 출력
%f 소수점 형식으로 출력
%e %E 지수 형식으로 출력
%g %G %e와 %f 중 짧은 쪽, 소수점에 이어지는 0은 생략
%c 문자 형식으로 출력
%s 문자열 형식으로 출력

참고로 서실 문자열에 옵션을 추가하여 좀더 다양하게 출력할 수 있습니다. 아래의 예를 참고하여 주십시오.

변환 문자열 출력 의미
printf("%d", 123) 123 표준 출력장치로 출력
printf("%5d", 123) ___123 10진수를 5자리에 맞추어 출력, 123앞에 공백 2개 추가
printf("%-5d", 123) 123__ 10진수를 5자리에 맞추어 출력, 왼쪽 맞춤, 오른쪽에 공백 추가
printf("%f", 1.234567) 1.234567 16진 정수 형식으로 출력
printf("%4f", 1.234567) 1.2346 소쉄 이하 4자리 출력, 반올림
printf("%7.2f", 1.234567) ___1.23 소숫점 포함해서 전체 7자리, 소수점 이하 2자리. 공백 3개가 앞 부분에 추가됩니다.
printf("%s", "forum.falinux.com") forum.falinux.com 지수 형식으로 출력
printf("%20s", "forum.falinux.com") __________forum.falinux.com 자릿수를 맞추기 위해 왼쪽에 공백을 넣어 문자열 출력
printf("%10s", "forum.falinux.com") forum.falinux.com 문자열이 더 길면 그대로 출력
printf("%.10s", "forum.falinux.com") forum.fali 문자열이 더 길면 잘라서 출력
printf("%-20s", "forum.falinux.com") forum.falinux.com________ 문자열을 왼쪽 맟춤으로 하여 오른쪽에 모자르는 자리를 공백으로 메꿈
printf("%12.10s", "forum.falinux.com") __forum.fali 전체 12자리로 10자리만 출력, 모자른 부분은 왼쪽에 공백 추가하여 출력
헤더 stdio.h
형태 int sprintf (const char s, const char * format, ... );
char *s
char *format 서식 문자열

인수


반환

char *s 서식에 맞추어 저장할 메모리 영역의 포인터 
 char *format 서식 문자열 

int  출력된 문자 수를 반환하며 오류가 발생하면 음수를 반환 
 
예제
#include <stdio.h>

int main( void)
{
   char  ptr[1024];
   int   ret;

   ret   = sprintf( ptr, "%d %x %s", 123, 123, "forum.falinux.com");
   printf( "ret=%d ptr=%sn", ret, ptr);

   return 0;
}
]$ ./a.out
ret=24 ptr=123 7b forum.falinux.com
참고


char temp[16] = {0};

sprintf(temp, "TEST : %.*s", 5, "1234567890"); //5 때문에 5글자를 넣는듯 싶음(공간이 남아있음)
printf("%.*s\n
%s\n", strlen(temp), "12345678901234567890", temp);
printf(temp);
결과

123456789012
TEST : 12345 // %.*s 로 자릿수 지정한만큼 출력 strlen(temp),      %s 스트링

TEST : 12345 //이건 당연한거고


asterisk * 를 사용하면 정밀도 조종이 가능함
*s,10 이런식으로 쓰던데 우측정렬기능이 있는듯함


결론 .*s 쓰면 원하는 만큼 문자열에서 빼다 쓸 수 있음
근데 문자열보다 긴 길이일경우 정렬이 깨짐


http://neodreamer.tistory.com/101
참고 여러 옵션 비교

'devel' 카테고리의 다른 글

4bytes data type pointer에서 1byte 씩 접근하기  (0) 2012.06.02
gcc 개인적인 정리  (0) 2012.04.23
Posted by 쵸코케키

2008. 5. 27. 18:13 devel/etc

File To String in C++

method1

  ifstream infile;
  infile.open ("input.txt");
 
if (infile.is_open())
  {
    while (infile.good())
 {



  infile >> str;                                         //stream으로 넘기면 공백, \n 파싱 자동으로 됨
                                                                //웃긴건 str을 int형으로 선언하면 int 형으로 들어간다
  cout<< str<<endl;                                
  tmp =  (char) infile.get();                          //char 형으로 들어감(int로 들어와서)
 }                                                         //.getline() 하면 어케 들어갈지 궁금(string으로 될듯?)
    infile.close();
  }


자세한건 ifstream의 member function을 찾아보도록



  else
  {
    cout << "Error opening file";
  }






 method2
1.파일을 불러들인다
2.파일의 개행문장을 한줄씩 vector에 저장한다
3.저장된 vector의 값을 istringstream을 이용하여 개별단어별로 출력한다

이상입니다.

============================================


//프로그램에서 사용할 헤더파일의 로드
#include<iostream>
#include<vector>
#include<string>
#include<fstream>
#include<sstream>

//표준 이름공간 사용 선언
using namespace std;      

//파일로 부터 읽어들여서 벡터로 store하는 함수의 선언
void store(vector<string> &vv)
{
        //datafile.txt를 읽어들인다
        ifstream file_in("datafile.txt", ios::in);
        //문자열을 읽어들이기 위한 buffer의 선언
        char buffer[100];          
   
        //최대 100글자, 한줄씩 buffer에 저장한다
        while(file_in.getline(buffer, 100, '\n')!=NULL)
    {
                //buffer에 저장된 값을 string type인 벡터로 넣기 위한 string type 변수 tmp의 선언
                string tmp;
                //tmp 에 buffer의 값을 넣는다
            tmp = buffer;
                //벡터 vv에 tmp를 push_back한다
            vv.push_back(tmp);
        }
        //파일의 끝까지 읽고 파일을 닫는다
    file_in.close();    
}

//벡터로 읽어들인 파일의 개행문장을 단어(word)별로 출력하는 함수 print의 선언
void print(vector<string> &vv)
{
        //vector vv의 사이즈만큼 루프를 수행한다
        for (int ii = 0 ; ii != vv.size() ; ++ii )
        {
                //string type 변수 line과 word의 선언
                string line, word;
                //변수 line에 vector vv의 [ii]번째 요소를 반환해서 집어넣는다
                line = vv[ii];

                //line에 저장된 값을 출력하고 사용자의 이해를 돕기 위한 내용문 출력
                cout << endl << "ivec[" << ii << "]에 파일로부터 읽어들여 저장되어있는 한 문장 : "
                         << endl << line << endl
                         << "=========================================================================="
                         << endl << "이하는 각각 단어별로 출력하기 : " << endl << endl;
               
                //istringstream을 이용해 string type 변수 line에 저장된 값을 임시저장한다
                istringstream stream(line);
                //stream이 '\n'을 만날때까지 while구문을 수행한다
                //빈칸을 제외한 각각의 개별 단어를 string type 변수 word에 저장한다
                while (stream>>word)
                {
                        //저장된 word를 한줄씩 화면에 출력한다
                        cout << word << endl;
                }
        //사용자가 한 화면에 한 문장씩 보기 수월하도록 넣은 선택문
        char cmd;
        cout << endl << "계속하시겠습니까? (y/n) : ";
        cin >> cmd;
        //y를 입력하면 for loop 문장을 계속 수행
        if ( cmd == 'y' )
                continue;
        //y가 아니면 loop문장을 빠져나간다
        else break;
        }
}

//main함수의 선언
void main(void)
{
        //datafile의 값을 저장할 string type의 vector ivec의 선언
        vector<string> ivec;


        //store함수를 이용하여 ivec에 한줄씩 string으로 저장
    store(ivec);
        //print함수를 이용하여 ivec에 저장된 line을 word별로 한줄씩 출력
        print(ivec);

}

'devel > etc' 카테고리의 다른 글

Makefile 쉬운 예제  (1) 2009.10.17
윤드림훃의 주옥같은 글  (0) 2009.10.17
Debug Mode - Enable  (0) 2009.01.02
simple fgets source code  (0) 2008.12.02
class member 접근과 클래스 내에서 클래스 선언해서 쓰기  (0) 2007.04.26
Posted by 쵸코케키

2008. 5. 25. 16:50 devel/man & example

String Parsing

1

string tmp; string str("Test string");

size_t found = str.find('i');
tmp.assign(str,0,found);


끝~
i 이후 부분은

tmp.assign(str,found,str.length()) 하면 됨미..


i를 제거 하고 싶으면 found + 1하면 되고





2
string에서 parsing 하기 ,  istringstream 에 관한 간단한 예시( 공백 파싱_ )

'string.h'에 정의된 strtok() 함수가 있습니다.

예제를 보자면

char string[] = "words separated by spaces -- and, punctuation!";
const char delimiters[] = " .,;:!-";
char *token;

token = strtok (string, delimiters); /* token => "words" */
token = strtok (NULL, delimiters); /* token => "separated" */
token = strtok (NULL, delimiters); /* token => "by" */
token = strtok (NULL, delimiters); /* token => "spaces" */
token = strtok (NULL, delimiters); /* token => "and" */
token = strtok (NULL, delimiters); /* token => "punctuation" */
token = strtok (NULL, delimiters); /* token => NULL */


위의 예제에서 delimiters[] 에 설정된 문자들이 구분자로 사용됨을 알수 있습니다.

공백문자마다 쪼개고 싶다면 delimiters[] = " " 라고 사용하시면 됩니다.








#include <iostream>
#include <sstream>
#include <string>
using namespace std;
//istringstream::str

int main () {

  int val,n;

  istringstream iss;
  string strvalues = "32 240 2 1450";

  iss.str (strvalues);

  for (n=0; n<4; n++)
  {
    iss >> val;
    cout << val+1 << endl;
  }

  return 0;
}

'devel > man & example' 카테고리의 다른 글

scanf에서 fflush(stdin) 사용 안하고 \n 파싱해서 없애기  (2) 2011.11.27
function pointer  (0) 2009.11.24
sprintf int to ascii  (0) 2009.11.08
C++ , C File OUTPUT e.g.  (0) 2008.12.02
bit shift e.g. , 2dim matrix, Defed Func  (0) 2007.05.01
Posted by 쵸코케키

블로그 이미지
chocokeki
쵸코케키

공지사항

Yesterday
Today
Total

달력

 « |  » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

최근에 올라온 글

최근에 달린 댓글

글 보관함