拆分一串制表符分隔的整数并将它们存储在向量中
Split a string of tab separated integers and store them in a vector
ifstream infile;
infile.open("graph.txt");
string line;
while (getline(infile, line))
{
//TODO
}
infile.close();
我从文件中逐行获取输入并将每一行存储在字符串“line”中。
每行包含由制表符分隔的整数。我想将这些整数分开并将每个整数存储在一个向量中。但我不知道如何进行。在 C++ 中是否有类似 split
字符串的函数?
副本有一些解决方案,但是,我更愿意使用 stringstream
,例如:
#include <sstream>
//...
vector<int> v;
if (infile.is_open()) // make sure the file opening was successful
{
while (getline(infile, line))
{
int temp;
stringstream ss(line); // convert string into a stream
while (ss >> temp) // convert each word on the stream into an int
{
v.push_back(temp); // store it in the vector
}
}
}
As 这会将文件中的所有 int
值存储在向量 v
中,假设文件实际上只有 int
值,因为例如,超出 int
范围的字母字符或整数将不会被解析,并且只会触发该行的流错误状态,并在下一行继续解析。
ifstream infile;
infile.open("graph.txt");
string line;
while (getline(infile, line))
{
//TODO
}
infile.close();
我从文件中逐行获取输入并将每一行存储在字符串“line”中。
每行包含由制表符分隔的整数。我想将这些整数分开并将每个整数存储在一个向量中。但我不知道如何进行。在 C++ 中是否有类似 split
字符串的函数?
副本有一些解决方案,但是,我更愿意使用 stringstream
,例如:
#include <sstream>
//...
vector<int> v;
if (infile.is_open()) // make sure the file opening was successful
{
while (getline(infile, line))
{
int temp;
stringstream ss(line); // convert string into a stream
while (ss >> temp) // convert each word on the stream into an int
{
v.push_back(temp); // store it in the vector
}
}
}
As int
值存储在向量 v
中,假设文件实际上只有 int
值,因为例如,超出 int
范围的字母字符或整数将不会被解析,并且只会触发该行的流错误状态,并在下一行继续解析。