2013-10-06 46 views
0

我創建了一個非常簡單的代碼,但是push_back函數不想工作。它給了我一個完全不同於預期的結果。vector push_back不起作用

下面是代碼:

std::vector<std::string> words; 
std::ifstream infile ("words.txt"); 
std::string temp; 
while (std::getline(infile, temp)) 
{ 
    words.push_back(temp); 
} 
for (std::size_t i = 0; i < words.size(); i++) 
{ 
    std::cout << words[i] << " "; 
} 

的 「words.txt」 文件只包含4個字:

window 
tyre 
give 
speaker 

結果被認爲是 「窗口輪胎給揚聲器」,但對於我是「揚聲器」。 問題是什麼?

+0

您確定您正在閱讀_correct_文件嗎? – P0W

+4

您是否嘗試過對輸入文件進行轉儲(例如使用'hexdump -C'或類似的方法)來檢查流氓控制序列,比如'\ r',這可能會解釋您所看到的行爲。 (您的輸入文件可能是來自DOS/Windows系統的文本文件,您可能正在使用類似unix的系統。) –

+0

是的,我是。我試圖編輯它,但我總是說最後的話。 – mitya221

回答

2

這被證明是潛在的問題:

您是否嘗試傾倒輸入文件(例如,用hexdump -C或類似)來檢查流氓控制序列如\r這或許可以解釋你所看到的行爲。

您的輸入文件可能是來自DOS/Windows系統的文本文件,您可能正在使用類Unix系統。

相關問題