好的,我有这个程序使用 c-strings 工作。我想知道是否可以将未格式化的文本块读入 std::string?我玩弄了一下,if >>
但这是逐行读取的。我一直在破坏我的代码并试图使用 std::string 撞到墙上,所以我认为是时候招募专家了。这是一个工作程序,您需要提供一个包含一些内容的文件“a.txt”以使其运行。
我试图愚弄:
in.read (const_cast<char *>(memblock.c_str()), read_size);
但它表现得很奇怪。我必须做std::cout << memblock.c_str()
才能打印出来。并memblock.clear()
没有清除字符串。
无论如何,如果您能想到一种使用 STL 的方法,我将不胜感激。
这是我使用 c-strings 的程序
// What this program does now: copies a file to a new location byte by byte
// What this program is going to do: get small blocks of a file and encrypt them
#include <fstream>
#include <iostream>
#include <string>
int main (int argc, char * argv[])
{
int read_size = 16;
int infile_size;
std::ifstream in;
std::ofstream out;
char * memblock;
int completed = 0;
memblock = new char [read_size];
in.open ("a.txt", std::ios::in | std::ios::binary | std::ios::ate);
if (in.is_open())
infile_size = in.tellg();
out.open("b.txt", std::ios::out | std::ios::trunc | std::ios::binary);
in.seekg (0, std::ios::beg);// get to beginning of file
while(!in.eof())
{
completed = completed + read_size;
if(completed < infile_size)
{
in.read (memblock, read_size);
out.write (memblock, read_size);
} // end if
else // last run
{
delete[] memblock;
memblock = new char [infile_size % read_size];
in.read (memblock, infile_size % read_size + 1);
out.write (memblock, infile_size % read_size );
} // end else
} // end while
} // main
如果您看到任何可以使此代码更好的内容,请随时告诉我。