C++ 从文件中读取整数和字符串

标签 c++ string

我有一个看起来像这样的文件:

4
Sam Stone
2000
Freida Flass
100500
Tammy Flass
5000
Rich Raptor
55000

我正在尝试读取它,但是 while 循环中的第一个 getline 始终不返回任何内容。 int 4 被正确读取。

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <vector>
#include <string>

using namespace std;

const int SIZE = 60;


struct person
{
    string name;
    double money;
};

int main()
{
    char filename[SIZE];
    string input;
    char inputs [50];
    int value;
    int count = 0;
    vector<person> Members;

    ifstream inFile;
    inFile.open("carinfo.txt");
    if (!inFile.is_open()){ cout << "Could not open fle"; }

    inFile >> value;
    Members.resize(value);

    while (inFile.good())
    {
        inFile.getline(inputs, SIZE); //getline(inFile, input, '\n');
        inFile >> value;

        count++;
    }
    cout << "Total lines = " << count;

    system("pause");
    return 0;
}

最佳答案

考虑使用 std::stringop>>(std::istream, person) 来读取元素,这对我有用

#include <string>
#include <vector>
#include <limits>
#include <fstream>
#include <iostream>
#include <iterator>

struct person
{
    std::string name;
    double money;
};

//read in 1 person
std::istream& operator>>(std::istream& is, person& p) {
    is >> p.money;
    is.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    std::getline(is, p.name);
    return is;
}

int main() {
    //open stream
    std::ifstream file("fname");
    //create vector, let the stream operators do the hard work
    std::vector<person> v((std::istream_iterator<person>(file)),
                           std::istream_iterator<person>());

    std::cout << "count: " << v.size();
}

http://en.cppreference.com/w/cpp/iterator/istream_iterator

关于C++ 从文件中读取整数和字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12884406/

相关文章:

java - 在 POI 中写入 Excel 工作表之前格式化字符串

python - 从 Windows XP 上的压缩标准库将 Python 3.3 嵌入到 C++ 中

c++ - 在一个对象的方法中生成 QTWidgets

python - 在 Django 中对字符串进行 Slugify

c++ - strrchr 导致 'Cannot convert from const char * to char *'

Java 字符串的细微差别

Java socket监听加载问题

c++ - 为什么 Qt .pro 文件会为平台提供错误,即使未选择或提及它也是如此?

c++ - 以编程方式查询 Linux 机器的电源状态

在某些情况下无法返回有意义值的 c++ 函数