我正在为使用 C++ 的“标准标准输入程序”的比赛编写程序。输入的第一行表示从那时起预计有多少行 (x) 作为输入。这些输入行可以是字符串、整数或两者的某种组合,并且每一行正好包含两个由空格分隔的元素。目前,我以类似于以下的方式一次接收每一行(在请求下一行之前处理信息):
string initial;
getline (cin,initial);
istringstream stringStream (initial);
vector<string> parsedString;
vector<int> data;
char splitToken = ' ';
while ( !stringStream.eof() )
{
string subString;
getline( stringStream, subString, splitToken);
parsedString.push_back( subString );
}
for (int i = 0; i <parsedString.size(); i++)
{
string temp = parsedString[i];
int intTemp = atoi(temp.c_str());
data.push_back(intTemp);
}
unsigned int n = data[0];
unsigned int m = data[1];
在这种特定情况下,我知道传入的数据将是两个整数,但情况并非总是如此。我想知道是否有某种方法可以使我的代码更快,或者通过改变我的方法(也许在知道有多少输入行之后立即获取所有输入行)或者通过使用更好的内置 C++ 函数来拆分传入的行空间到组成它们的两个元素。
谢谢