C ++中的is_open()函数总是返回0值,getLine(myFile,line)不返回任何内容

时间:2016-08-25 20:39:24

标签: c++ file-io cygwin fstream

尝试使用fstream在C ++中读取文件。 但是is_open()函数总是返回0结果而readline()不会读取任何内容。请参阅下面的代码段。

var parObj = $find('<%= lkpInput.ClientID %>');

1 个答案:

答案 0 :(得分:5)

您认为自己正在打开D:\<somepath>\testdata\task1.in.1

但实际上您正试图打开D:\<somepath><tabulation char>estdata<tabulation char>ask1.in.1,因为\t被解释为制表。

(例如\n)<{1}}中的换行符

printf("hello world\n");也很特别BTW并不是真正的道路,否则你会遇到另一个错误:\x这可能会更好地与你交谈!)

你必须像这样逃避反斜杠:

error: \x used with no following hex digits

Windows也接受这样的路径,更方便,除非你想用D:\\xx\\xx\\xx\\xx\\testdata\\task1.in.1命令生成需要反斜杠的批处理脚本(cd用作批处理命令中的选项开关):

/

正如NathanOliver所述,如果编译器启用了C ++ 11模式(或使用D:/xx/xx/xx/xx/testdata/task1.in.1),则可以使用原始前缀

--std=c++11

最后一句话:肮脏的逃脱方式:

R"(D:\xx\xx\xx\xx\testdata\task1.in.1)"

在这种情况下使用大写可以正常工作

  1. 因为窗口不区分大小写
  2. C会让反斜杠保持原样。
  3. 但那只是运气。很多人这样做,却没有意识到他们非常接近一个bug。 顺便说一句,很多人都把Windows路径大写(在这个网站上看得很多)因为他们注意到他们的路径在不知道原因的情况下不会使用小写。