这是我的简单代码:
#include "C:\Users\Myname\Desktop\Documents\std_lib_facilities.h"
using namespace std;
//**************************************************
int main()
try {
ifstream ifs("C:\Users\Myname\Desktop\raw_temps.txt");
if(!ifs) error("can't open file raw_temps.txt");
keep_window_open("~~");
return 0;
}
//**************************************
catch(runtime_error& e) {
cerr<<e.what();
keep_window_open("~~");
return 1;
}
.txt
文件位于地址“C:\ Users \ Myname \ Desktop \ raw_temps.txt”中。
当我运行它时,只有error (" ... ")
函数运行,并且如果无法打开raw_temps.txt
文件。
为什么请?
答案 0 :(得分:2)
我认为这个问题是由于对使用反斜杠作为路径分隔符的一些误解造成的。 c ++中的路径应该使用普通斜杠编写,而不是使用反斜杠来防止像您在此处所做的那样的错误。这是因为单个反斜杠用作转义字符,这意味着它与下一个符号组合成为新符号。例如,换行符为“\ n”,制表符为“\ t”。
为了防止这种情况发生,并使代码在所有平台上运行,而不仅仅是那些使用反斜杠作为路径分隔符的代码,请坚持使用斜杠作为路径分隔符。
有关此内容的更多信息,请访问on Marshal Clines C++ FAQ
而且,是的,你可以使用双反斜杠来完成这项工作,但是你正在养成一个坏习惯IMO。此外,它是两个字符,只需要一个。
答案 1 :(得分:0)
您需要忽略“\”,因为它是通配符。用。。。来代替 ”\”。
答案 2 :(得分:0)
更改此行
ifstream ifs("C:\Users\Myname\Desktop\raw_temps.txt");
到此
ifstream ifs("C:/Users/Myname/Desktop/raw_temps.txt");
\
用于标记转义字符,因此除非您使用\\
,否则字符串将不会像您认为的那样。您可以通过使用调试器并在此行中断开来看到这一点。
答案 3 :(得分:0)
最佳选择是在源代码文件夹中保留要打开的文件并写入
ifstream ifs("raw_temps.txt");