返回到输入文件 的某一行的开头,C++
Return to the begin of a line of an input file , C++
我在C++中使用 fstream 有问题。如果我打开一个文件,例如 test.txt,我想读取每一行,检查我获取的第一个值是否不是字符串。如果它不是字符串,则线条由数值组成。如果我检查第一个,我丢失了我需要的第一个值。如果我想回到行首,我该怎么做? 我已经尝试过seekg(*,ios::cur)
但我不知道我必须返回多少位置才能回到行的起点。谢谢
您要做的是将行读入字符串,然后可以使用substr
例如检查它是否是数字然后读取下一行。
#include <fstream>
#include <string>
std::ifstream file( "file.txt" );
std::string line;
while( std::getline( file , line ) )
{
line.substr( 0 , 2 ) // for example the first 2 positions
// do your checks
}
如果您知道每行包含一定数量的不变值,则还有一种方法使用标记。如果您提供有关文件中实际数据的更多信息,我可能会为您澄清这一点。
此外,我建议检查字符串是否为空,甚至可以在之前修剪它以确保您没有空行或检查行字符串的大小,您不会尝试剪切不存在的内容。
如果我答对了你的问题,你想阅读每行中的第一个单词,然后对该信息做一些事情,然后再次返回到该行中的第一个字符。
ifstream fin;
string text;
fin.open("test.txt");
fin >> text;
text.size()
将为您提供第一个单词的长度,因为>>运算符最多只能读取第一个空格。因此,使用该信息,您现在知道要返回多少个字符。
您可以在阅读该行之前进行检查。
ifstream foo("bar.txt");
if(isdigit(foo.peek())){
// You're getting a number
}else{
// You're getting a string
}
peek
不会删除字符,因此您可以像没有读取任何内容一样继续操作。
相关文章:
- 用c++从输入文件中读取另一行
- 读取文件的最后一行并输入到链接列表时出错
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 从C++dll访问C#中的一行主要参数
- 在C++中,我如何接受不同于同一行的用户输入
- 如何从一行中读取特定数量的字符?(C++)
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- 读取最后一行代码算法 - c++ 时出现问题
- 查找矩阵C++中每一列和每一行的最小和最大元素
- 有没有办法在一行中填充矢量图
- 需要将一行代码从C++ Qt翻译成PyQt
- 在 C++11 中,如何查找并返回以给定字符串开头的字符串向量中的所有项?
- 字符串开头的分隔符
- 如何只阅读最后一行的开头?
- 为什么我在输出的开头多了一行
- 以 LPCTSTR 开头编写另一行文本的最佳方法是什么?
- 返回到输入文件 的某一行的开头,C++
- 为什么编译器在以加法运算符开头的一行不犹豫呢
- 如何在一行的开头使用fseek()
- 如何在C++中的文件开头添加一行