C++:通过删除第一个字符将字符串写入文件
c++: writing strings to file by removing first char
我正在使用ifstream和getline逐行读取输入文件(例如string line
(。我必须通过删除文件的第一个字符来输出string line
文件。我正在做的是erase
行的第一个字符并使用ofstream输出它。有没有更好的方法可以做到这一点(意味着相对更快的方法(?我有数百万个字符串。(请注意,并非所有行都是如此,仅适用于每 10 行的第一行(。
我会先尝试最简单的方法,看看它是否足够快:
if (!mystring.empty())
std::copy( mystring.begin() + 1, mystring.end(),
std::ostreambuf_iterator<char>(stream_object) );
您需要<algorithm>
和<iterator>
标头。
您可以输出实际的字符串指针加一:
outputStream << (line.c_str() + 1);
但是,最好先检查字符串是否不为空,否则最终可能会访问非法指针。
如果要输出子字符串,可以使用std::string::substr
函数。或者将 std::ostream::write
函数与上面概述的指针算法结合使用:
outputStream.write(line.c_str() + 1, 9); /* 1st to 10th character */
对于上述内容,您必须确保字符串的长度至少为十个字符。
注意:除非在极端情况下,否则我个人不会使用"黑客"作为本答案中概述的黑客。子字符串函数的存在是有原因的,并且是我建议使用的函数。
我假设你正在使用std::string...
std::string str; // contains the line
str.substr (1, str.length() - 1); // gives you what you need
贝斯特,阿科斯
也许在没有第一个字符的情况下编写整个字符串的最快方法是从@JoachimPileborg答案。但是如果你想从 1 号到 10 号写 10 个字符,那么最快的方法是使用 fwrite
函数而不是 fstream
.
fwrite( line.c_str() + 1, 1, 10, file );
请注意,您应该非常准确地使用它。您应该放心,该行有超过 10 个字符。
相关文章:
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 有没有办法从非C/C++文件中读取C++原始字符串文字的内容
- 如何打开并写入一个名称取自C++中字符串的文件
- 如何从二进制文件中读取字符串
- 如何在 c++ 中使用 getline 从文件中读取字符串?
- 将字符串与文件上的数据进行比较
- 用户输入字符串的文件附加问题..C++
- 如何从文件中读取两个字符串和数字数组,并将它们存储在对象向量中
- 如何使字符串出现在编译的二进制可执行文件的开头?
- 使用文件内容作为硬编码字符串
- 将文件复制到自定义位置,存在字符串转换问题
- 将二进制字符串/文件内容从 c++ 传递到节点 js
- 在字符串.h文件中调用函数而不带对象
- 将带有引号和逗号的字符串文件读入字符串数组
- 如何从字符串/文件中分离字符和整数
- 将字符串文件存储到动态数组中
- 如何用C++将字符串文件Txt解析成数组
- 如何用Boost::Spirit解析复杂的字符串文件
- 如何从C语言的第二行读取字符串文件
- 一个很好的性能替代PHP-字符串/文件操作