2014-04-04 4 views
0

로 구분 나는 파일로이 있습니다C++ : 파일에서 이름과 성을 구분 쉼표

Collins,Bill 80 
Smith,Bart 75 
Allen,Jim 82 
Griffin,Jim 55 
Stamey,Marty 90 
Rose,Geri 78 
Taylor,Terri 56 
Johnson,Jill 77 
Allison,Jeff 45 
Looney,Joe 89 
Wolfe,Bill 63 
James,Jean 72 
Weaver,Jim 77 
Pore,Bob 91 
Rutherford,Greg 42 
Javens,Renee 74 
Harrison,Rose 58 
Setzer,Cathy 93 
Pike,Gordon 48 
Holland,Beth 79 

당신은 성과 이름은 쉼표로 분리되어 볼 수 있듯이.

은 지금은 내 코드이 있습니다

ifstream inputFile; 
inputFile.open ("students.txt"); 

string studentNames;   // Student names - Last name followed by first 
int studentMarks = 0;   // Student mark for text/exam 

// Read in data from students.txt 
inputFile >> studentNames; 
inputFile >> studentMarks; 

// IF file has too much data, output WARNING 
if (numElts >= NUM_NAMES) 
{ 
    cout << "Error: File contains too many lines of data, check the file." << endl << endl; 
} 
else 
{ 
    names[numElts] = studentNames; 
    marks[numElts] = studentMarks; 
    numElts++; 
} 

내가이 쉼표를 우회하도록하려면, 나는 그것이 같은 firstName과 나는 그냥 name = firstname " " last name 같은 이름으로 병합합니다 다음 성 저장할. 어떻게해야합니까? 당신이 현재하고있는 것처럼

+2

1. 읽기를 ,을 제거하고 사이에 공간이 마지막으로 이름을 얻을 수 있습니다. 2. 쉼표가'string :: find()'로 어디에 있는지 찾으십시오. 3.이 정보로 두 개의 새 부속 문자열을 작성하십시오. –

+0

기다림 어떻게이 찾기를 inputFile >> studentNames 바로 아래에 사용합니까? 나는 studentNames.find (",");를 넣을 것이다. 하지만 그 다음엔? 이 쉼표를 찾은 후에 어떻게 제거합니까? – tinywolves

+0

당신은 * 내가 방금 말한에서 수행하고 알아낼 수없는 경우 90초 * Google에서 다음 미안하지만, 당신이 운동의 이런 종류의 탈출구 당신의 개념 깊이입니다. 문자열이 무엇인지, 그리고 먼저 수행 할 수있는 다양한 기본 작업에 대해 알아야합니다. –

답변

0

사용이 기능은 전체`FIRSTNAME, lastname` 토큰,

string output; 
    int position = studentNames.find(','); 
    for(int i=position+1;i<studentNames.size();i++) 
     output+=studentNames[i]; 
    output+=' '; 
    for(int i=0;i<position;i++) 
     output+=studentNames[i]; 
    studentNames = output; 
+0

추가 기능을 사용할 수 없다고 생각합니다. 나는 설치되어서 일할 수있는 사람들에게 제한되어있어서 그렇게 할 수 없다. 이 모든 것은 이미 함수 안에 있습니다. – tinywolves

+0

답변을 편집했습니다. – Tahlil

+0

데이터가 성, 이름 이었지만 처음과 마지막으로 전환됩니다. 어떻게 그렇게 할 수 있습니까? 두 이름을 모두 캡처합니까? – tinywolves

1
std::string::size_type commaPos = studentName.find(","); 
std::string studentLastName = studentName.substr(0, commaPos); 
std::string studentFirstName = studentName.substr(commaPos + 1); 
+0

나는 C++을 처음 접했을 뿐이다. 나는 무엇을 사용하는지 이해하지 못하고 :: 네임 스페이스 std를 사용한다. 상단에. 이것은 내 첫 번째 C++ 클래스입니다. 첫 번째는 나를 혼란스럽게하므로 이해하고 싶습니다. 읽기 http://www.learncpp.com/cpp-tutorial/711-namespaces/ – tinywolves

+0

우리 교수가 정말 전혀 이런 일을 설명하지 않았기 때문에 링크가 많은 도움이 될 것입니다 감사합니다. – Tahlil

+0

에서 네임 스페이스에 대해 배울 수 – tinywolves

관련 문제