2009-11-05 4 views
0

문장 부호가있는 단어가 들어있는 텍스트 파일을 읽었으므로이 단어를 구두점없이 문자열로 읽고 싶습니다.특정 문자를 무시하고 문자열을 읽는 방법

예를 들어, 워드 내가 (쉼표없이) "안녕하세요"를 얻을 수있는 문자열을 원하는

"안녕하세요"수 있습니다. ifstream 라이브러리 만 사용하여 C++에서이를 어떻게 수행 할 수 있습니까? ignore 함수를 사용하여 마지막 문자를 무시할 수 있습니까?

미리 감사드립니다.

답변

1

, 만 무시하려는 경우 getline을 사용할 수 있습니다.

const int MAX_LEN = 128; 
ifstream file("data.txt"); 
char buffer[MAX_LEN]; 

while(file.getline(buffer,MAX_LEN,',')) 
{ 
    cout<<buffer; 
} 

편집 :std::string 사용하고 부스트 문자열 알고리즘 라이브러리를 사용하는 것입니다 MAX_LEN

ifstream file("data.txt"); 
string string_buffer;  
while(getline(file,string_buffer,',')) 
{ 
    cout<<string_buffer; 
} 
+0

그건 매력처럼 작동했지만 유일한 문제는 단어를 문자열에 저장하고 싶다는 것입니다. 어떻게해야합니까? –

+0

'std :: string'과 같은 문자열입니까? – Jacob

+0

나는 그렇게 생각한다. 문자열 형식 변수에 저장하려고합니다. 내가 선언 할 것 : string mystring 그래서 "Hello"라는 단어를 쉼표없이 "mystring"으로 저장할 수 있습니다. 따라서 "mystring"을 호출하기로 결정하면 다음과 같이 말할 수 있습니다. cout << mystring EDITED 파트 자체가 작동합니까, 아니면 코드의 첫 번째 부분이 필요합니까? 빠른 응답을 보내 주셔서 감사합니다. –

2

ifstream :: get (Ch * p, 스트림 크기 n, Ch 기간)을 시도해보십시오.

예 :

char buffer[64]; 
std::cin.get(buffer, 64, ','); 
// will read up to 64 characters until a ',' is found 
// For the string "Hello," it would stream in "Hello" 

당신은 단순히 쉼표보다 더 견고해야하는 경우 문자열을 사후 처리해야합니다. 단계는 다음과 같을 수 있습니다

  1. 는 "덩어리"단어
  2. 반환 단어 적절한 도움을 문자열로
  3. 를 사용하여 문자열 :: find_first_of을() 스트림을 읽습니다.

질문을 오해 한 적이 있으면 언제든지 알려주세요.

+0

쉼표 이외의 문자를 무시하는 방법에 대한 설명을 주셔서 감사합니다. 나는 의심의 여지가있다. 위의 대답에 대한 내 의견과 같습니다. char 변수 (버퍼)를 사용하여 단어를 얻은 경우 전체 문자를 문자열 (단어 문자열)에 어떻게 저장할 수 있습니까? 그래서 나는 단순히 문자열 (wordstring)을 호출함으로써 문제의 다른 부분에 단어를 보여줄 수있었습니다. 빠른 응답을 보내 주셔서 감사합니다. –

1

한 가지 방법은 멀리한다. 문자열의 특정 문자 나 문자열을 바꾸거나 제거하는 데 사용할 수있는 several "replace" functions이 있습니다.

구두점을 제거한 후 Boost Tokenizer 라이브러리를 사용하여 문자열을 단어로 분할 할 수도 있습니다.

+0

고마워요, 제가 살펴 보겠습니다. –

관련 문제