我在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
是字符串流。 nCases
,credit
和nItems
只是int变量。令我困惑的是当我得到nCases
时,提取运算符如何按预期工作但在我尝试检索credit
和nItems
的值时停止工作。
答案 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];
}