2014-01-18 24 views
-4

我有幾個輸入線加載到我的計劃,但我不知道爲什麼它不爲我工作:(加載整個輸入線編程

int n; 
    string count; 
    int *tab = new int[256]; 
    cin >> n; 
    for (int i = 0; i < n; i++) 
    { 
     getline(cin, count); 
     cin.ignore(); 
     for (int x = 0; x < count.size(); x++) 
      if(count[x]!=' ')tab[(int)count[x]]++; 
    } 

這是我已經程序必須讀取要加載的行數,然後加載行,然後對每個字母進行計數,併爲n行執行 當我輸入最後一行輸入時,它會凍結,我嘗試了沒有cin.ignore()的getline,但它是一樣的。

+0

它做什麼?它有什麼問題? –

+0

你忽略了每一行的第一個字符,只是第一個字符。 – chris

+0

什麼不適合你?還請更新您的帖子,並附上有效的和編譯示例的內容。 – tumdum

回答

1

「eg I type:2 Hello World hello world and it stucks」

你怎麼輸入它?每個單詞之間必須有一個換行符,如果不是,這只是一行,所以程序仍然等待第二行(因爲輸入了2)。

如果你想的空間是分隔符,僅僅通過更換cin >> count;getline(cin, count);cin.ignore();客場情況(見克里斯的評論)。

+0

我輸入2,然後新行,第一行加載,新行,第二行加載,我試着添加CTRL + Z結束輸入,它仍然沒有幫助。 – encoree1337

+0

@ encoree1337嘗試在'cin >> n'(循環外)之後放置一個'cin.ignore()',並從循環中刪除'cin.ignore()'。順便說一句:你按下RETURN鍵或按某個字符輸入新行,例如「\ n」? – mb84

+0

我通過輸入新行,我也嘗試從輸入文件加載,但'cin >> n'後的忽略幫助,謝謝! :d – encoree1337