您的代碼的主要問題是'\'是C/C++中的轉義字符。
所以,當你把字符串:"C:\Users\David\Desktop"
的斜槓轉義下一個字符,因此它們實際上不是字符串的一部分,什麼可執行文件得到的是"C:UsersDavidDesktop"
來彌補這有兩種選擇:
- 使用斜槓
'\\'
的轉義序列,從而爲您提供:"C:\\Users\\David\\Desktop"
- 或使用
'/'
字符分隔路徑中的目錄。
- 我個人更喜歡這個選項,因爲它可以在所有現代操作系統之間移植。 (贏/ Linux的/ MAC)
你的第二個問題是,你是不正確的使用了開來。只需將路徑名稱指定爲1個長字符串(這稱爲絕對路徑)。我個人更喜歡將文件名提供給構造函數,而不是明確地調用open(但這只是個人偏好)。
#include <fstream>
int main()
{
std::ofstream out1("C:\\Users\\David\\Desktop\\exemple1.txt");
std::ofstream out2("C:/Users/David/Desktop/exemple2.txt");
}
小調。硬編碼到桌面目錄的路徑不是很好的做法。您將應用程序與該版本的操作系統如何佈置文件系統緊密耦合。每個操作系統通常提供了一個關於如何查找用戶目錄的技術,請參閱您的OS文檔以獲取更多詳細信息(或者在StackOverflow上提出另一個問題)。
另請注意boost提供了一個文件系統類來抽象所有主要操作系統的文件系統。它有助於瞭解它如何工作,而不是將文件表示爲字符串;當您構建複雜路徑時(例如帶有空格的路徑),字符串表示可能會輕微出錯。嵌入到其中的字符。
在open方法中提供桌面路徑和文件名。 – naivnomore 2010-07-29 05:15:54