为什么提取操作员不工作?

时间:2011-04-30 09:57:58

标签: c++

我在Google的Code Jam中尝试了一些问题。对于问题Store Credit,我在C ++中有以下代码:

    if (input.is_open()) {
    getline(input, line);
    ss << line;
    ss >> nCases;

    for (int i = 0; i < nCases; i++) {
        getline(input, line);
        ss << line;
        ss >> credit;
        cout << credit << endl;

        getline(input, line);
        ss << line;
        ss >> nItems;
        cout << nItems << endl;
        int list[nItems];
    }

input是文本文件(所有内容都已正确初始化),line是一个字符串变量,用于保存文本文件中新提取的行,而ss是字符串流。 nCasescreditnItems只是int变量。令我困惑的是当我得到nCases时,提取运算符如何按预期工作但在我尝试检索creditnItems的值时停止工作。

2 个答案:

答案 0 :(得分:3)

而不是ss << line;,请使用ss.str(line); ss.clear();

重置流

答案 1 :(得分:1)

如果这些只是每行的整数,那么为什么不使用atoi

if (input.is_open()) {
    getline(input, line);
    nCases = atoi( line.c_str() );

    for (int i = 0; i < nCases; i++) {
        getline(input, line);
        credit = atoi( line.c_str() );
        cout << credit << endl;

        getline(input, line);
        nItems = atoi( line.c_str() );
        cout << nItems << endl;
        int list[nItems];
    }