Questions tagged «ifstream»

5
我需要手动关闭ifstream吗?
close()使用时需要手动打电话std::ifstream吗? 例如,在代码中: std::string readContentsOfFile(std::string fileName) { std::ifstream file(fileName.c_str()); if (file.good()) { std::stringstream buffer; buffer << file.rdbuf(); file.close(); return buffer.str(); } throw std::runtime_exception("file not found"); } 我需要file.close()手动打电话吗?不应该ifstream使用RAII关闭文件吗?
201 c++  ifstream  raii 

6
获取std :: ifstream处理LF,CR和CRLF?
我特别感兴趣istream& getline ( istream& is, string& str );。ifstream构造函数是否可以选择告诉其将所有换行编码转换为'\ n'?我希望能够打电话getline并让它优雅地处理所有行尾。 更新:澄清一下,我希望能够编写几乎可以在任何地方编译的代码,并且可以从几乎任何地方获取输入。包括带有'\ r'而不带有'\ n'的稀有文件。最大限度地减少软件用户的不便。 解决该问题很容易,但是我仍然对标准中灵活处理所有文本文件格式的正确方法感到好奇。 getline将一个完整的行读取到一个字符串中,直到一个“ \ n”。'\ n'是从流中使用的,但是getline不在字符串中包含它。到目前为止还可以,但是在包含在字符串中的“ \ n”之前可能有一个“ \ r”。 有三种类型的行结尾的文本文件中看到:“\ n”是在Unix机器上,“\ r”的传统结局是在旧的Mac操作系统使用,Windows使用一对,“\ r”(我认为)后跟“ \ n”。 问题在于,getline将'\ r'留在字符串的末尾。 ifstream f("a_text_file_of_unknown_origin"); string line; getline(f, line); if(!f.fail()) { // a non-empty line was read // BUT, there might be an '\r' …
85 c++  ifstream  newline 

3
使用字符串作为打开文件路径的C ++ ifstream错误。
我有: string filename: ifstream file(filename); 编译器抱怨ifstream文件和字符串不匹配。我需要将文件名转换为其他内容吗? 这是错误: error: no matching function for call to ‘std::basic_ifstream<char, std::char_traits<char> >::basic_ifstream(std::string&)’ /usr/include/c++/4.4/fstream:454: note: candidates are: std::basic_ifstream<_CharT, _Traits>::basic_ifstream(const char*, std::_Ios_Openmode) [with _CharT = char, _Traits = std::char_traits<char>]
71 c++  ifstream 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.