string类输入

1、对于C风格字符串,有3种方式

    using namespace std;
    char info[100];
    cout << "请输入:";
    cin >> info;
//    cin.getline(info, 100);
//    cin.get(info, 100);
    cin.getline(info, 100, ':');  // getline可以使用哪个字符来确定输入的边界:
    cout << info << endl;

2、对于string对象有2种方式

    string stuff;
    cout << "请输入:";
    // cin >> stuff;
    // getline(cin, stuff);

    // getline可以使用哪个字符来确定输入的边界: 
    // 自动调整目标string对象的大小,使之刚好能够存储输入的字符
    getline(cin, stuff, ':');   
    cout << stuff << endl;

3、比较

    char fname[10];
    // cin >> fname;             // 如果输入的内容大于9个会产生问题
    cin.getline(fname, 10);   // 最多只获取9个字符的输入
    cout << fname << endl;
    string lname;
    // cin >> lname; // 输入的内容可以很长
    getline(cin, lname);
    cout << lname << endl;

示例:

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

    int main(int argc, const char * argv[]) {
        using namespace std;
        ifstream fin;
        if(fin.is_open() == false)
        {
            cerr << "Can't open file. Bye.\n";
            exit(EXIT_FAILURE);
        }
        string item;
        int count = 0;
        getline(fin, item, ':');
        while (fin) { // while input is good
            ++count;
            cout << count << " : " << item << endl;
            getline(fin, item, ':');
        }
        cout << "Done\n";
        fin.close();

        return 0;
    }