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
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 |