2012-06-01 37 views
0

我有一個C++應用程序需要從.txt文件讀取數據。我已經有這個應用程序工作了大約8-9個月,但在更改應用程序的另一部分後,在任何調用getline()時出現「訪問衝突」錯誤。std :: getline()訪問衝突,用於工作,但不能從任何文件讀取

這裏是我的代碼:

std::string line; 
std::ifstream config; 
config.open(fileName); 

if(config.is_open()) { 

    while(config.good()) 
    { 
     std::getline(config, line); 
     //Other code to do stuff with the string "line". 
    } 

我不知道爲什麼這種情況正在發生,難道是與一些性病庫DLL某處或某事?

我完全喪失。

作爲一種快速解決方法,還有另一種簡單的方法來逐行讀取文件,以便可能會繞過此問題?

謝謝。

哦,這裏是錯誤消息:

0xC0000005: Access violation writing location 0x00000014.

+0

OS(從MSVCRT.LIB(釋放)取代MSVCRTD.LIB(最後一個字符 'd' 爲調試LIB))?編譯器? (讓我猜,Windows?Visual C++?) – Linuxios

+0

涉及哪些類型的其他代碼?由於地址0x14的訪問衝突意味着您可能會取消引用'char'。像這樣的低內存幾乎都是操作系統內存,並且幾乎總是處於足夠低的地步,只有取消引用字符才能做到這一點。你在'std :: string'中訪問C字符串嗎? – Linuxios

+3

用'std :: stringstream'嘗試'std :: getline'來確認它的'std :: getline',而不是文件權限問題。 – andre

回答

1

這不是回答你的問題,而是一個普遍的反應。

不要複製從cplusplus.com fstream代碼,你的榜樣應該是:

std::string line; 
std::ifstream config(fileName); 

while (std::getline(config, line)) 
{ 
    //Other code to do stuff with the string "line". 
} 
+0

啊好吧,是cplusplus的東西不可靠/過時? –

+0

是的,它不可靠 –

+0

另外,這是如何解決這個問題的? – Matt

0

務必從連接器全部更換調試的.libs並與他們同發行版本替換如果您正在使用Visual用於發佈版本的C++。

例如:屬性 - >鏈接器 - >輸入 - >附加依賴