2013-04-28 81 views
0

我需要閱讀的由標題組織的配置設置,如菜單txt文件:,表:,服務員:等一個文本文件的C++輸入部分到一個數組

一個正確的區段被發現我需要提供正確的信息。所以基本上我試圖搜索一個特定字符串的文本文件,並且一旦找到該字符串,就開始存儲來自包含該字符串的行之後的行的輸入。

我到目前爲止所做的努力。

void MenuItemArray() 
{ 
    string arrayIn; 

    ifstream fin("/usr/local/final_project/restaurant/config.txt"); 

    while (getline(fin, arrayIn)) 
    { 
     if (arrayIn.find("Menu:") == true) 
     { 
     } 

的文本文件,我從拉:

Tables: table #, max seats 
1 2 
2 4 
3 2 
4 2 
5 2 
6 4 
7 6 
8 10 
9 2 
10 4 
11 4 
12 4 
13 4 
14 2 
15 2 
16 2 
17 2 
18 2 

Waiters: first name followed by table list 
John 1,2,5,9,11,15 
Maria 3,4,6,7,17,18 
Mike 8,10,12,13,14,16 

Menu: listing of the full menu: item code, name, price 
A1 Bruschetta 5.29 
A2 Caprese_Flatbread 6.10 
A3 Artichoke-Spinach_Dip 3.99 
A4 Lasagna_Fritta 4.99 
A5 Mozzarella_Fonduta 5.99 
E1 Lasagna_Classico 6.99 
E2 Capellini_Pomodoro 7.99 
E3 Eggplant_Parmigiana 8.99 
E4 Fettuccine_Alfredo 7.49 
E5 Tour_of_Italy 14.99 
D1 Tiramisu 2.99 
D2 Zeppoli 2.49 
D3 Dolcini 3.49 
S1 Soda 1.99 
S2 Bella_Limonata 0.99 
S3 Berry_Acqua_Fresca 2.88 
+2

首先閱讀'std :: string :: find'手冊;該功能不能像你想象的那樣工作。 – 2013-04-28 20:14:50

回答

0

如果文件比較小,可以讀取所有的入一個std ::字符串,然後使用std:字符串函數找到。

ifstream in("config.txt"); 
ostringstream oss; 
oss << in.rdbuf(); 
string contents = oss.str(); 
+0

你確定這會工作嗎?我嘗試使用'stringstream'而不是'ifstream'來複制問題,但是當我打印到標準輸出時,字符串的內容是空的。 – 0x499602D2 2013-04-28 20:40:19

+0

是的,它也適用於istringstream,將ifstream替換爲istringstream,並且內容中包含「config.txt」。 – parkydr 2013-04-28 20:49:39

相關問題