C++ 将内容从C文件传输到C++;流动

C++ 将内容从C文件传输到C++;流动,c++,file-io,ostream,C++,File Io,Ostream,假设我用C语法打开了一个文件 FILE* fp = fopen("whatever.txt", "w"); // Library function needs FILE* to work on libray_function(fp); // Now I'd like to copy the contents of file to std::cout // How??? fclose(fp); 我希望能够在C++的流中拷贝那个文件的内容(比如 StrugSuth或者甚至 STD::CUT)。

假设我用C语法打开了一个文件

FILE* fp = fopen("whatever.txt", "w");
// Library function needs FILE* to work on
libray_function(fp);

// Now I'd like to copy the contents of file to std::cout
// How???

fclose(fp);

<>我希望能够在C++的流中拷贝那个文件的内容(比如<代码> StrugSuth或者甚至<代码> STD::CUT)。我该怎么做?

您已打开文件进行写入。无论如何,你都需要关闭它并重新打开它,你也可以随意打开它(如果你喜欢的话,可以作为一个istream)。那就取决于你有多在乎表现了。如果你真的在乎,你应该分块读(一次至少512字节)。如果你不关心性能,你可以读取一个字节,吐出一个字节。

你已经打开文件进行写入。无论如何,你都需要关闭它并重新打开它,你也可以随意打开它(如果你喜欢的话,可以作为一个istream)。那就取决于你有多在乎表现了。如果你真的在乎,你应该分块读(一次至少512字节)。如果你不关心性能,你可以读取一个字节,吐出一个字节。

先关闭它

fclose(fp);
然后再打开

string line;
ifstream myfile ("whatever.txt");
if (myfile.is_open())
{
    while ( myfile.good() )
    {
        getline (myfile,line);
        cout << line << endl;
    }
    myfile.close();
}
字符串行;
ifstream myfile(“whatever.txt”);
如果(myfile.is_open())
{
while(myfile.good())
{
getline(myfile,line);
不能先关上它

fclose(fp);
然后再打开

string line;
ifstream myfile ("whatever.txt");
if (myfile.is_open())
{
    while ( myfile.good() )
    {
        getline (myfile,line);
        cout << line << endl;
    }
    myfile.close();
}
字符串行;
ifstream myfile(“whatever.txt”);
如果(myfile.is_open())
{
while(myfile.good())
{
getline(myfile,line);
cout您可以使用and:

#包括
#包括
std::ifstream in(“whatever.txt”);
std::ostringstream s;
s您可以使用and:

#包括
#包括
std::ifstream in(“whatever.txt”);
std::ostringstream s;

什么是错误的<代码> FRADED/COD>并将数据放入字符串?“代码> FRAAD < /CUD>有什么不对,把数据放进字符串中?这是C++,而且您几乎不需要/想要使用<代码> ISXOPEN/<代码>,<代码>好< /COD>或<代码>关闭< /代码>,OP也不说关于基于行的数据。参见…嗯…谢谢。我明白了。他不是在问基于线的数据……这是C++的,你几乎不需要/想要使用<代码> ISXOPEN/<代码>,<代码>好< /COD>或<代码>关闭<代码>,OP也不说关于基于行的数据。还…嗯…谢谢。我知道。他不是在问基于行的数据…@ PiotrNycz,是的。你有理由认为它不会吗?我是你。ght它只适用于所有内容都在streambuf中的stringstream。对于filebuf,我认为缓冲区中包含整个1GB文件并不常见……但我没有尝试。只是好奇你有任何描述此
os@PiotrNycz的链接,你可能会发现这很有用:我错了-忽略我的评论/请求。+1因为这是一个阅读的机会《标准》中正确的章节。谢谢-我写了我的最后一条评论,没有看到你的最后一条。@PiotrNycz,是的。有什么原因你认为它不会吗?我认为它只适用于stringstream,所有内容都在streambuf中。对于filebuf,我相信缓冲区中包含整个1GB文件并不常见……但我没有尝试。只是cur如果您有任何描述此
os@PiotrNycz的链接,您可能会发现这很有用:我错了-忽略我的评论/请求。+1因为这是一个阅读《标准》正确章节的机会。谢谢-我写的最后一条评论没有看到您的最后一条。