2012-01-16 11 views
0

我試圖將一個字符串從getline(file,line)比較另一個字符串與std::string s="mmee"比較字符串從一個文件C++

if (line==s){} 

,但是這是從來沒有執行。爲什麼??裏面的文件我有:

mmee 
hello 
hey 

如何修剪空格或從字符串行輸入?

+0

文件中的行是「mmee hello hey」?因爲如果是這樣,我看不出兩個字符串應該匹配的原因。 – 2012-01-16 11:46:10

+0

你怎麼知道不執行操作? – 2012-01-16 11:50:09

+0

你是什麼意思「這永遠不會執行」?你的意思是返回false,沒有達到代碼行,運行時錯誤....什麼?你還試過調試嗎? – 2012-01-16 11:52:44

回答

1

你的代碼是正確的。

請檢查您的輸入文件以確認沒有前導或尾隨空格。

+0

我有一些權限問題 – 2012-01-16 16:33:58

0

首先你爲什麼會認爲這會被執行。

MMEE你好哎是文件在同一行的一部分,當你做一個函數getline線將包含整條生產線,而不僅僅是MMEE。因此,如果條件將失敗。

看看這個link修剪空間。

0

std::getline()默認讀取到第一個換行符。您可以指定到你想要的功能來讀取字符,像這樣:

getline(file, line, ' '); // not the space between single quote chars 

這將讀取你的榜樣文件的唯一「MMEE」部分(MMEE你好哎)。

編輯:這是我讀你的例子。誰編輯OP人們只是假定輸入文件是mmee\nhello\nhey

+0

合理的假設,這三個單詞全部在單獨的行中,只是沒有縮進,所以它們在編輯之前在一行上呈現。 – 2012-01-16 14:00:08

0

您可以通過使用

的std ::刪除(astring.begin(),astring.end(),'「)去除空間;

之後可以比較字符串。

退房的鏈接:: http://www.cplusplus.com/forum/beginner/863/

您可以比較字符串:http://www.cplusplus.com/reference/string/string/compare/

+0

(astring.begin(),astring.end(),'')是否存在空格或不存在/ – 2012-01-16 12:11:11

+0

std :: remove在e – 2012-01-16 12:14:56

+0

不工作是的他們是sapce''...只需檢查此鏈接http ://www.cplusplus.com/forum/beginner/863/ – 2012-01-16 12:16:35