我正在用c ++读取一个文本文件,这是其中一些行的示例:
remove 1 2 cost 13.4
除了删除后的两个整数,除了“1”和“2”之外我怎么能忽略所有的东西并把它们放在两个整数变量中?
我的不完整代码:
ifstream file("input.txt");
string line;
int a, b;
if(file.is_open())
{
while (!file.eof())
{
getline (file, line);
istringstream iss(line);
if (line.find("remove") != string::npos)
{
iss >> a >> b; // this obviously does not work, not sure how to
// write the code here
}
}
}
答案 0 :(得分:1)
以下是一些选项:
使用为该行创建的stringstream
查找remove
令牌并解析接下来的两个整数。换句话说,替换它:
if (line.find("remove") != string::npos)
{
iss >> a >> b; // this obviously does not work, not sure how to
// write the code here
}
用这个:
string token;
iss >> token;
if (token == "remove")
{
iss >> a >> b;
}
为该行的其余部分创建stringstream
(6
是“删除”令牌的长度。
string::size_type pos = line.find("remove");
if (pos != string::npos)
{
istringstream iss(line.substr(pos + 6));
iss >> a >> b;
}
调用行seekg
上的stringstream
方法,在“删除”令牌后设置流的输入位置指示符。
string::size_type pos = line.find("remove");
if (pos != string::npos)
{
iss.seekg(pos + 6);
iss >> a >> b;
}