我有一个输入文本文件,其中有5行,其中一个人的名字,姓氏和他们的年龄相邻,例如:
Mark Cyprus 21
Elizabeth Monroe 45
Tom McLaugh 82
Laura Fairs 3
Paul Dantas 102
如何使用字符串操作从每一行中获取它们的年龄?
答案 0 :(得分:3)
您可以使用sscanf()
(查看链接,它有一个类似于您需要的示例)。
假设每行文本都被读入char数组sscanf(line, "%*s %*s %d", &age);
。
%*s
由于您对名字和姓氏不感兴趣,您可以使用#include <stdio.h>
int main(int argc, char const *argv[])
{
freopen("input.txt", "r", stdin);
char line[100];
int age;
while(fgets(line, 100, stdin) != NULL)
{
sscanf(line, "%*s %*s %d", &age);
printf("%d\n", age);
}
return 0;
}
,这将允许消费该行中的名字和姓氏文字,并且您赢了&#39 ; t需要将它们分配给任何变量。
下面是完成任务的完整代码,假设您有一个名为&#34; input.txt&#34;的文本文件。包含您在问题中提供的文本。
21
45
82
3
102
输出:
width:30%
一些链接:
答案 1 :(得分:2)
在 C ++ 中,可以帮助您的工具是std::istringstream
,其中包括:#include <sstream>
。它的工作原理如下:
std::ifstream ifs("mydatafile.txt");
std::string line;
while(std::getline(ifs, line)) // read one line from ifs
{
std::istringstream iss(line); // access line as a stream
std::string column1;
std::string column2;
std::string column3;
iss >> column1 >> column2 >> collumn3; // no need to read further
// do what you will with column3
}
std::istringstream
所做的是允许您将std::string
视为输入流,就像常规文件一样。
iss >> column1 >> column2 >> collumn3
将列数据读入vaiables。
答案 2 :(得分:2)
试试这个:
#include<iostream>
#include<string>
#include<fstream>
int main()
{
std::ifstream fin;
fin.open("text");
std::string str;
while(fin>>str)
{
fin>>str;
fin>>str;
std::cout<<str<<"\n";
}
fin.close();
return 0;
}
输出
21
45
82
3
102