相关疑难解决方法(0)

streampos和pos_type,streamoff和off_type之间有什么区别?

之间有什么区别streampospos_type,streamoff并且off_type,除非他们被不同的定义.我应该用什么basic_stream<>::seek功能?

c++

7
推荐指数
1
解决办法
4054
查看次数

将Textfile读取到String的最短方法

可能重复:
在c ++中将文件粘贴到std :: string的最佳方法是什么?

我以为会有这样的问题,但我找不到一个.所以这就是我的问题.

将整个文本文件读入字符串的最短方法是什么?我只想使用最新的C++标准和标准库的功能.

我认为这个共同的任务必须有一个班轮!

c++ string text file c++11

6
推荐指数
1
解决办法
301
查看次数

C++删除txt文件中的最后一个字符

我需要一些关于删除txt文件中最后一个字符的帮助.例如,如果我的txt文件包含1234567,我需要C++代码删除最后一个字符,以便文件变为123456.谢谢大家.

c++ text-files

4
推荐指数
2
解决办法
1万
查看次数

用c ++编写文本/二进制文件最优雅的方法是什么?

我在阅读时发现了一些好的结果,例如:使用迭代器和预分配读取txt,或者读入容器.所以我想知道如何将最优雅的std :: string写入文件?

编辑:读取时我可以通过seek和tellg预先为字符串分配空间,因为我知道字符串的大小,我怎么能告诉文件系统我要写多少?

c++ string file-io file text-files

3
推荐指数
1
解决办法
6660
查看次数

将文件读入 std::string 的最有效方法是什么?

我目前这样做,最后转换为 std::string 需要 98% 的执行时间。一定会有更好的办法!

std::string
file2string(std::string filename)
{
    std::ifstream file(filename.c_str());
    if(!file.is_open()){
        // If they passed a bad file name, or one we have no read access to,
        // we pass back an empty string.
        return "";
    }
    // find out how much data there is
    file.seekg(0,std::ios::end);
    std::streampos length = file.tellg();
    file.seekg(0,std::ios::beg);
    // Get a vector that size and
    std::vector<char> buf(length);
    // Fill the buffer with the size
    file.read(&buf[0],length);
    file.close();
    // return buffer as string
    std::string s(buf.begin(),buf.end());
    return s;
}
Run Code Online (Sandbox Code Playgroud)

c++ string file-io

3
推荐指数
2
解决办法
8813
查看次数

在C++ 11/14中高效读取文件

我正在创建一个IOManager类,其中我有一个函数来读取文件并将其存储在缓冲区中.这样做最有效的方法是什么?

我目前有2段代码:

bool IOManager::readFileToBuffer(std::string filePath, std::vector<unsigned char>& buffer) {
    std::ifstream file(filePath, std::ios::binary);
    if (file.fail()) {
        perror(filePath.c_str());
        return false;
    }

    //seek to the end
    file.seekg(0, std::ios::end);

    //Get the file size
    int fileSize = file.tellg();
    file.seekg(0, std::ios::beg);

    //Reduce the file size by any header bytes that might be present
    fileSize -= file.tellg();

    buffer.resize(fileSize);
    file.read((char *)&(buffer[0]), fileSize);
    file.close();

    return true;
}
Run Code Online (Sandbox Code Playgroud)

bool IOManager::readFileToBuffer(std::string filePath, std::vector<char>& buffer) {

    std::ifstream file(filePath, std::ios::binary);

    if (file.fail()) {
        perror(filePath.c_str());
        return false;
    }

    // copies all data into …
Run Code Online (Sandbox Code Playgroud)

c++ c++11 c++14

3
推荐指数
1
解决办法
5951
查看次数

使用istream从命名管道读取

是否可以使用流使用c ++(stl)从命名管道(mkfifo)读取 - 因此没有事先char *buffer[MAX_SIZE]为读取操作定义?

我想读取,直到缓冲区结束并将结果放入std::string.

(当前方法:bytes = read(fd, buffer, sizeof(buffer));需要提前分配某种缓冲区.)

c++ linux named-pipes

3
推荐指数
1
解决办法
3487
查看次数

读取C ++中的大型CSV文件(〜4GB)

我想读取一个大型CSV文件并将其存储到地图中。我首先读取文件,然后查看处理需要多长时间。这是我的循环:

while(!gFile.eof()){
   gFile >> data;
}
Run Code Online (Sandbox Code Playgroud)

我需要35分钟才能处理包含3500万行和6列的csv文件。有什么办法可以加快速度吗?对SO来说还很陌生,如果不能正确询问,请您道歉。

c++ csv parsing file large-files

2
推荐指数
1
解决办法
1551
查看次数

为什么这个C++代码比C#variant更慢

最近,我们要求有超过100,000个xml文件,并且所有这些文件都需要修改xml中的特定数据.简单的perl命令可以完成这项工作,但perl没有安装在文件所在的机器上.因此我写了一个小的C#代码来完成这项工作.

private static void ModifyXML(string[] args)
{
      Stopwatch sw = new Stopwatch();
      sw.Start();
      string path = @args[0];
      string opath = @args[1];
      string token = "value_date=\"20121130\"";
      string target = "value_date=\"20121019\"";

      Parallel.ForEach(Directory.EnumerateFiles(path), (file) =>
      {
           StringBuilder sb = new StringBuilder(File.ReadAllText(file));
           sb.Remove(0, 55);
           sb.Replace(token, target);
           var filename = file.Split(new char[] { '\\' }).Last();                
           File.WriteAllText(string.Format("{0}\\{1}", opath, filename), sb.ToString());
       });
       TimeSpan ts = sw.Elapsed;
       Console.WriteLine("Took {0} secs", ts.TotalSeconds);
}
Run Code Online (Sandbox Code Playgroud)

我决定实现C++版本.事实证明,C++版本并没有明显快于C#版本.在两个版本中运行了一段时间.实际上,它在某些运行期间和C#版本一样快.

对于C#,我使用的是.NET 4.0,而对于C++,它使用的是VC10.

void FileHandling(std::string src, std::string dest)
{
     namespace fs = boost::filesystem;
    auto start = …
Run Code Online (Sandbox Code Playgroud)

c# c++ ppl

1
推荐指数
1
解决办法
271
查看次数

字符串的'\n'太多了

我创建了一个名为FileReader的类.这是我在这个班级的阅读功能.它打开一个文件并读取它.当然,它将文件的内容放在我的类的"内容"变量中.它在最后一行.

std::string file_content;
std::string temp;
std::ifstream file;

file.open(filepath,std::ios_base::in);

while(!file.eof()){

    temp.clear();
    getline(file, temp);

    file_content += temp;
    file_content += '\n';
}

file_content = file_content.substr(0, file_content.length()-1); //Removes the last new line

file.close();

content = file_content;
Run Code Online (Sandbox Code Playgroud)

我打开的文件包含以下内容:

"你好\n什么事了?nCool".

当然我没有在我的文本文件中完全写出\n.但正如你所看到的那样,最后没有新的界限.

我的问题是,每当我将它打印到屏幕上时,"内容"都会在最后添加一个新行.但我删除了最后一个新行...出了什么问题?

c++

1
推荐指数
1
解决办法
90
查看次数

标签 统计

c++ ×10

file ×3

string ×3

c++11 ×2

file-io ×2

text-files ×2

c# ×1

c++14 ×1

csv ×1

large-files ×1

linux ×1

named-pipes ×1

parsing ×1

ppl ×1

text ×1