C++ 将文件中的数字插入向量<;向量<;int>&燃气轮机;
我想把每一行插入向量 我的文件如下所示: 问题是在getline中使用多个分隔符。 我的代码如下所示:C++ 将文件中的数字插入向量<;向量<;int>&燃气轮机;,c++,vector,std,fstream,getline,C++,Vector,Std,Fstream,Getline,我想把每一行插入向量 我的文件如下所示: 问题是在getline中使用多个分隔符。 我的代码如下所示: vector<int>czytajplik() { string line; vector<string> text; ifstream mojplik; vector<vector<int>> zajecia; mojplik.open("dane.txt"); if (mojplik.is_open()) { while (ge
vector<int>czytajplik()
{
string line;
vector<string> text;
ifstream mojplik;
vector<vector<int>> zajecia;
mojplik.open("dane.txt");
if (mojplik.is_open())
{
while (getline(mojplik, line))
{
while (getline(mojplik, line, ' '))
{
text.push_back(line);
}
}
mojplik.close();
}
else cout << "Unable to open file" << endl;
vector<int> textnumery;
for (int i = 0; i <text.size(); i++)
{
int num = atoi(text.at(i).c_str());
textnumery.push_back(num);
}
return textnumery;
}
vectorczytajplik()
{
弦线;
矢量文本;
ifstream mojplik;
媒介zajecia;
mojplik.open(“dane.txt”);
if(mojplik.is_open())
{
while(getline(mojplik,line))
{
while(getline(mojplik,line.))
{
文本。推回(行);
}
}
mojplik.close();
}
否则我想这就是你的要求:
std::ifstream mojplik{"dane.txt"};
if (mojplik.is_open()) {
std::vector<std::vector<int>> numbersLines{};
for (std::string line; getline(mojplik, line);) {
std::vector<int> numbersLine{};
std::istringstream is(line);
int num;
while (is >> num) {
numbersLine.push_back(num);
}
numbersLines.push_back(numbersLine);
}
mojplik.close();
}
std::ifstream mojplik{“dane.txt”};
if(mojplik.is_open()){
std::向量数行{};
for(std::string-line;getline(mojplik,line);){
std::向量数行{};
std::istringstream是(行);
int-num;
while(is>>num){
numbersLine.向后推(num);
}
数字线。向后推(数字线);
}
mojplik.close();
}
我假设您的数据看起来像
vector<vector<int>> zajecia;
ifstream mojplik("dane.txt");
if (mojplik.is_open())
{
for (string line; getline(mojplik, line); )
{
stringstream numbers_stream(line);
vector<int> numbers;
for (int number; numbers_stream >> number; )
{
numbers.push_back(number);
}
zajecia.push_back(numbers);
}
mojplik.close();
}
123445
678910
1112131415
想要一个2d向量等于
vector<vector<int>> result = { { 1, 2, 3, 4, 5 }, { 6, 7, 8, 9, 10 }, { 11, 12, 13, 14, 15 } };
vector result={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15};
那你想要什么
vector<vector<int>> zajecia;
ifstream mojplik("dane.txt");
if (mojplik.is_open())
{
for (string line; getline(mojplik, line); )
{
stringstream numbers_stream(line);
vector<int> numbers;
for (int number; numbers_stream >> number; )
{
numbers.push_back(number);
}
zajecia.push_back(numbers);
}
mojplik.close();
}
向量zajecia;
ifstream mojplik(“dane.txt”);
if(mojplik.is_open())
{
for(字符串行;getline(mojplik,line);)
{
字符串流编号\u流(线);
向量数;
用于(整数编号;数字\u流>>数字;)
{
数字。推回(数字);
}
扎耶西亚。推回(数字);
}
mojplik.close();
}
欢迎使用stackoverflow。请澄清您的问题!这些外来变量名称确实令人不安!但主要问题是问题看起来太像“调试我的代码”。好吧,如果我仍然能提供一些帮助,这两个嵌套的while将无法工作(基本上,你是扔掉第一行,然后读第二行的第一个数字,依此类推)。你可能会达到什么目的(我假设)你想要的是使用stringstreams:另一种方法是一个字符接一个字符地读取你自己的自动机并编写代码。我想,可能还有其他更简单的方法,你可以通过用空格代替逗号来使用解决方案。请注意,你可以将内部循环的主体压缩为stringstream编号\u stream(line);zajecia.emplace_back(istream_iterator(numbers_stream),istream_iterator());
,但我选择限制对原始代码的更改