2012-02-18 233 views
1

目錄中有一個文件,我試圖讀取一個文件,但我不能。我的代碼有什麼問題。例子是從http://www.cplusplus.com/forum/beginner/37208/無法讀取文件C++

#include <iostream> 
#include <fstream> 
#include <string> 
#define MAX_LEN 100 
using namespace std; 
string inlasning() 
{ 
    string text; 
    string temp; // Added this line 

    ifstream file; 
    file.open ("D:\education\Third course\semestr 2\security\lab1.2\secret_msg.txt"); 

    while (!file.eof()) 
    { 
    getline (file, temp); 
    text.append (temp); // Added this line 
    } 


    cout << "THE FILE, FOR TESTING:\n" // For testing 
     << text << "\n"; 

    file.close(); 

    return text; 
} 
void main() 
{ 
inlasning(); 
} 
+0

輸出是什麼? – SlavaNov 2012-02-18 11:26:30

+0

請記住,\在一個字符串使得任何後面的「特殊」 – Gowtham 2012-02-18 11:28:57

回答

4

更改\\\在文件路徑中。 (或/

+0

OP沒有說他/她是否在使用Windows/Linux/Mac。 「/」是否在任何地方工作? – Gowtham 2012-02-18 11:32:01

+0

我認爲他/她在Windows上工作(不是文件路徑 - D:\ ....) – SlavaNov 2012-02-18 11:33:28

+0

啊是的,但我很好奇,是否在Windows中正向斜槓(「/」)?我記得,當我嘗試了相同的後面時,它不起作用... – Gowtham 2012-02-18 11:42:13

1

採取在字符串文字\用作轉義字符。

您必須編寫\\

注意:您應該檢查open呼叫。

失敗時,failbit標誌被設置(其可以與構件 失敗進行檢查),並根據與異常設置例外值可以 被拋出。

0

\是一個轉義字符,所以您需要使用\\來獲得您想要的結果。 這是真實的,幾乎無處不在,即使在這裏計算器,你的東東才能寫出這樣的事情,例如使用它:

* A *

(只是把*\),否則(如果你不使用\)計算器將解釋的文本,將輸出斜體A,這一點:

一個

同樣是大膽真(兩個星...兩個SLA畲族)的

** A **

代替

一個

:)

... 或者也許是因爲它是你無法讀取它「 secret_msg「:P(LOL)