为什么提取操作不工作

Why is the extraction operator not working?

本文关键字:工作 操作 提取 为什么      更新时间:2023-10-16

我在Google的Code Jam中尝试了一些问题。对于商店信用问题,我有以下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是一个字符串流。nCases, creditnItems只是int变量。让我感到困惑的是,当我获得nCases时,提取操作符如何按预期工作,但一旦我试图检索creditnItems的值,就停止工作。

ss.str(line); ss.clear();代替ss << line;重置流

如果这些只是每行整数,那么为什么不使用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];
    }