大家好,我必须从文本文件中获取值,但这些值并不是独立存在的,它们都是这样写的:
人口规模:30
C++ 中有什么方法可以让我在“:”之后读取数据吗? 我试过使用 >> 运算符,例如:
string pop;
inFile >> pop;
但是当然,空格会在到达数字之前终止语句,并且出于某种原因使用
inFile.getline(pop, 20);
给我很多错误,因为它出于某种原因不想直接写入字符串。 我真的不想使用 char 数组,因为那样测试数字并从字符串中单独提取它就不那么容易了。 那么无论如何我可以将 getline 函数与字符串一起使用吗? 是否可以从“:”字符后读取?
#include <iostream>
#include <fstream>
#include <string>
#include <cstring>
#include <cstdlib>
using namespace std;
int main()
{
string fname;
cin >> fname;
ifstream inFile;
inFile.open(fname.c_str());
string pop1;
getline(inFile,pop1);
cout << pop1;
return 0;
}
好的,这是我使用新 getline 的代码,但它仍然没有输出任何内容。它确实可以正确打开文本文件,并且可以使用 char 数组
最佳答案
你可能最好阅读整行然后操作字符串:-
std::string line;
std::getline(inFile, line);
line = line.substr(19); // Get character 20 onwards...
你最好也寻找冒号 :-
size_t pos = line.find(":");
if (pos != string::npos)
{
line = line.substr(pos + 1);
}
或者类似的东西
完成后,您可能想将其反馈到字符串流中以便读取整数和其他内容?
int population;
std::istringstream ss(line);
ss >> population;
显然这一切都取决于你想对数据做什么
关于c++ - 是否可以从 C++ 文件的一行中读取特定字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13209650/