返回到输入文件行的开头,C++; 我在C++中有一个FFSH问题。如果我打开一个文件,例如test.txt,我想读取每一行,检查我获取的第一个值是否不是字符串。如果它不是一个字符串,那么这行就是由数值组成的。如果我检查第一行,我就丢失了我需要的第一个值。如果我想回到行的开头,我该怎么做?我试过使用seekg(*,ios::cur),但我不知道要返回到行的开头我必须返回多少个位置。 谢谢你

返回到输入文件行的开头,C++; 我在C++中有一个FFSH问题。如果我打开一个文件,例如test.txt,我想读取每一行,检查我获取的第一个值是否不是字符串。如果它不是一个字符串,那么这行就是由数值组成的。如果我检查第一行,我就丢失了我需要的第一个值。如果我想回到行的开头,我该怎么做?我试过使用seekg(*,ios::cur),但我不知道要返回到行的开头我必须返回多少个位置。 谢谢你,c++,line,fstream,C++,Line,Fstream,你要做的是把这一行读成一个字符串,然后你可以使用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 fir

你要做的是把这一行读成一个字符串,然后你可以使用
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
}
#包括
#包括
std::ifstream文件(“file.txt”);
std::字符串行;
while(std::getline(文件,行))
{
line.substr(0,2)//例如前2个位置
//请付账
}
如果您知道每行包含一定数量的值,那么也有一种使用标记的方法。 如果您提供更多关于文件中实际数据的信息,我可能可以为您澄清这一点


此外,我还建议检查字符串是否为空,甚至可以在检查前对其进行修剪,以确保没有空行,或者检查行字符串的大小,以确保您不会试图剪切掉不存在的内容。

如果我正确回答了您的问题,您希望阅读每行的第一个单词,然后使用该信息执行操作,然后再次返回到行中的第一个字符

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
不会删除字符,因此您可以像未读取任何内容一样继续