Istream用C ++中的\ n字符进行字符串转换

时间:2015-04-19 17:56:59

标签: c++ string type-conversion istream

当我的istream还包含换行符并且我不想转义空格时,如何将istream转换为字符串? 谢谢。

3 个答案:

答案 0 :(得分:0)

如果您的意思是如何将整个std::istream复制到std::string,那么有很多方法。

这是一个:

int main()
{
    // here is your istream
    std::ifstream ifs("test.txt");

    // copy it to your string
    std::string s;
    for(char c; ifs.get(c); s += c) {}

    // display
    std::cout << s << '\n';
}

答案 1 :(得分:0)

您可以为整个文件分配足够大的字符串并立即读取:

ifstream fd(filename);          // open your stream (here a file stream)
if (!fd)
    exit(1);

fd.seekg(0, ios_base::end);     // go to end of file
size_t filesize = fd.tellg();   // dtermine size to allocate
fd.seekg(0, ios_base::beg);     // go to the begin of your file

string s;                       // create a new string
s.resize(filesize+1);           // reserve enough space to read

fd.read(&s[0], filesize);       // read all the file at one
size_t bytes_read = fd.gcount();  // it could be than less bytes are read
s.resize(bytes_read);           // adapt size

答案 2 :(得分:0)

您可以使用istreambuf_iterator之类的

#include <iostream>
#include <string>
#include <fstream>

int main()
{
   std::ifstream ifile("test.txt"); // open 
   std::string str(std::istreambuf_iterator<char>(ifile), {}); // initialize
   std::cout << str; // display
}