Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C++中读取TXT文件,如果我们不知道它有多少个数据串,每个行有多长?_C++ - Fatal编程技术网

如何在C++中读取TXT文件,如果我们不知道它有多少个数据串,每个行有多长?

如何在C++中读取TXT文件,如果我们不知道它有多少个数据串,每个行有多长?,c++,C++,有一个input.txt,字符串排序如下: 名称1名称2编号1:编号2编号1:编号2 NameX NameY number1:number2 number1:number2 实际上,我们不知道其中有多少名称,以及一行中有多少number:number字符串。任务是在每行写出第一个名字,并写出每行中number1大于number2的次数。 问题是,我不知道我应该如何读这两行,而不知道每行有多少 提前谢谢你的帮助 编辑:我的问题不是我不知道文件有多长,我可以逐行读取,我不知道如何读取一行,我不

有一个input.txt,字符串排序如下:

名称1名称2编号1:编号2编号1:编号2

NameX NameY number1:number2 number1:number2

实际上,我们不知道其中有多少名称,以及一行中有多少number:number字符串。任务是在每行写出第一个名字,并写出每行中number1大于number2的次数。 问题是,我不知道我应该如何读这两行,而不知道每行有多少

提前谢谢你的帮助

编辑:我的问题不是我不知道文件有多长,我可以逐行读取,我不知道如何读取一行,我不知道有多少字符串


edit2,例如:Steven Jack 2:5 6:4 7:2

您可以一个接一个地获取带有stringstream的独立元素,并检查它是否以十进制数字字符开头,或者仅当没有任何名称以数字开头时才有效

像这样:

std::string line; // assuming you got the line

std::stringstream ss(line);
std::string str;

while (ss >> str) {
    // use isdigit() to check if it's a decimal digit character or not
    if (isdigit(s.at(0))) {
        // do something with NUMBERS
        // getting the actual numbers from these strings is another problem
    } else {
        // do something with NAMES
    }
}
编辑:正如您所说的,一行一行地获取不是问题,因此我代码中的line变量假定您在内存中以某种方式获取了整行,并使用这一行


EDIT2:如果没有引号也没什么不同,在这种情况下,你可以检查第一个字符是否是数字,顺便说一句,如果任何名称以数字开头,这将是一个问题

看起来是XML或JSON的完美任务,而不是自己设计的格式。谢谢,这几乎是我需要的,我将编辑问题编辑答案,几乎相同,但您可以使用isadigit检查它是否以十进制数字字符0、1、2、,9或不是。这里是这个方法的链接:哦,但我没有想到负数,它可以是负数吗?因为如果其中任何一个是这样开始的:-3:4它会检查“-”第一个三明治显然不是一个数字。不,它不能是否定的,谢谢你的回答,帮了我很多忙:欢迎你: