2

テキストファイルから値を取得する必要がありますが、値は単独ではなく、すべて次のように記述されています。

人口規模: 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配列で動作します

4

2 に答える 2

3

データが次の形式であると仮定します

 <Key>:<Value>

1 行に 1 つ。次に、これを行います:

std::string line;
while(std::getline(inFile, line))
{
    std::stringstream  linestream(line);

    std::string key;
    int         value;

    if (std::getline(linestream, key, ':') >> value)
    {
        // Got a key/value pair
    }
}
于 2012-11-03T13:56:14.563 に答える