c++ - 是否可以从 C++ 文件的一行中读取特定字符?

标签 c++ string fstream

大家好,我必须从文本文件中获取值,但这些值并不是独立存在的,它们都是这样写的:

人口规模: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/

相关文章:

c++ - __builtin_trap : when to use it?

c++ - 是否有 strstr() 的 constexpr 版本?

c++ - 为什么 C++ 按位 AND 运算符对不同大小的操作数表现得像这样?

python-3.x - 在 PyCharm 中重构字符串连接以格式化

javascript - 使用 jquery 或 javascript 删除部分属性值

c - 简单的字符串计数器程序调试(指针)

C++ fstream,从文本中读取数据并执行数学运算?

c++ - 通过C++ fstream分离.txt文件中的注释和数据

c++ - 函数调用中无法识别的类型

c++ - 如果需要,如何为 `c` 选项设置 `/RTC` 变体?