2012-05-14 4 views
0

I는 다음과 같이 포맷 된 파일이 : 단어 1, Word2 및 Word3 같은 단어가 사용하는 15 개 공간, 거기에문자열로 행의 첫 번째 X 문자를 읽기

단어 1과 NUM1 사이
Word1   num1 num2 
Word2 Word3 num3 num4 

.

내가 처음 15 개 문자를 읽고 문자열로 넣어하려면, 다음 숫자를 읽어

string[0] = "Word1   "; 
number[0] = num1; 
number[1] = num2; 
string[1] = "Word2 Word3 "; 
number[2] = num3; 
number[3] = num4; 
... 

내가 현재 파일에서 데이터를 읽는 데 사용하는 기능 :

void read_data(){ 

ifstream datafile("U2.txt"); 

datafile>> product_count >> product2_count; 

for (int i = 1; i <= product_count; i++) { 
    datafile>> product_cost[i]; 
} 

for (int i = 1; i <= product2_count; i++) { 
    datafile>> products[i].product2_name; 
    for (int j = 1; j <= product_count; j++) { 
     datafile>> products[i].product_ammount[j]; 
    } 
} 

datafile.close(); 

} 

및 데이터 파일 자체 :

6 5 
12 25 35 2 3 9 
Salotos  5 1 0 0 2 1 
Kepsnys  6 3 12 9 0 0 
Gaiva   0 0 1 15 1 0 
Ledai Miau  0 0 5 5 5 1 
Tortas   1 2 1 1 1 1 
+1

그리고 지금까지 시도했다? – m0skit0

+0

지금까지 한 번에 한 단어 씩 읽었지만 두 개 이상의 단어로 구성된 문자열이있는 경우 첫 번째 단어를 문자열로 읽은 다음 나머지는 다가오는 ints가 아니라 동일한 문자열, 그래서 int는 어디로 가야했는지, 0을 반환합니다. 기본적으로 "inFile >> string >> number >> number" – H1tm4n

+0

과 같은 경우 실제로 더 나은 코드를 표시한다면 :) – m0skit0

답변

1

내가 당신을 위해 코드를 작성하지 않지만 기본적인 생각은

  • 는 처음 15 개 문자을 문자열의 나머지와 std::stringstream를 구축 공간을
  • 를 제거하고 numX가의 배열 인 sstream >> num1[i] >> num2[i]을 (수행하도록 트림 std::string
  • getline()와 라인을 읽어 int 및 i은 행의 인덱스입니다.
1

귀하의 문제는 첫 번째 공간까지 읽어 줄

datafile >> products[i].product2_name; 

함께. CharlesB는 string::substr을 사용하여 처음 15자를 추출한 다음 트리밍을 제안하는 것과 같이 읽어야합니다. See here

내가 강력하게 for 루프는 0에서 시작한다 의심하지 1.

관련 문제