C++ 只读 fstream 中的整数
C++ read only integers in an fstream
如何读入文件并忽略非整数?
我有从文件中删除“,”的部分,但还需要删除第一个单词。
#include <iostream>
#include <fstream>
#include <sstream>
using namespace std;
以上是我使用的所有STL。
string line, data;
int num;
bool IN = false;
ifstream file;
file.open(filename);
if (!file)
{
cout << "File is not loading" << endl;
return;
}
while (getline(file, line))
{
stringstream ss(line);
while (getline(ss, data, ','))
{
if (!stoi(data))
{
break;
}
else
{
num = stoi(data);
if (IN == false)
{
//h(num);
//IN = true;
}
}
}
}
我试图读取的文件是
3
Andrew A,0,1
Jason B,2,1
Joseph C,3,0
基本上,我可以完全忽略这些名字。我只需要数字
您已经知道如何阅读 line-by-line,并根据逗号将一行分成单词。我在您的代码中看到的唯一问题是您滥用了 stoi()
。它在失败时抛出异常,您没有捕获到,例如:
while (getline(ss, data, ','))
{
try {
num = stoi(data);
}
catch (const exception&) {
continue; // or break; your choice
}
// use num as needed...
}
另一方面,如果你知道每行的第一个词总是non-integer,那么就无条件地忽略它,例如:
while (getline(file, line))
{
istringstream ss(line);
getline(ss, data, ',');
// or:
// ss.ignore(numeric_limits<streamsize>::max(), ',');
while (getline(ss, data, ','))
{
num = stoi(data);
// use num as needed...
}
}
如何读入文件并忽略非整数? 我有从文件中删除“,”的部分,但还需要删除第一个单词。
#include <iostream>
#include <fstream>
#include <sstream>
using namespace std;
以上是我使用的所有STL。
string line, data;
int num;
bool IN = false;
ifstream file;
file.open(filename);
if (!file)
{
cout << "File is not loading" << endl;
return;
}
while (getline(file, line))
{
stringstream ss(line);
while (getline(ss, data, ','))
{
if (!stoi(data))
{
break;
}
else
{
num = stoi(data);
if (IN == false)
{
//h(num);
//IN = true;
}
}
}
}
我试图读取的文件是
3
Andrew A,0,1
Jason B,2,1
Joseph C,3,0
基本上,我可以完全忽略这些名字。我只需要数字
您已经知道如何阅读 line-by-line,并根据逗号将一行分成单词。我在您的代码中看到的唯一问题是您滥用了 stoi()
。它在失败时抛出异常,您没有捕获到,例如:
while (getline(ss, data, ','))
{
try {
num = stoi(data);
}
catch (const exception&) {
continue; // or break; your choice
}
// use num as needed...
}
另一方面,如果你知道每行的第一个词总是non-integer,那么就无条件地忽略它,例如:
while (getline(file, line))
{
istringstream ss(line);
getline(ss, data, ',');
// or:
// ss.ignore(numeric_limits<streamsize>::max(), ',');
while (getline(ss, data, ','))
{
num = stoi(data);
// use num as needed...
}
}