试图从文件中的行中获取数据
Attempting to get data from lines in a file
我对c++很陌生,所以很抱歉,如果这是一个愚蠢的问题!
对于一个项目,我们给出一个包含几千行值的文件,每行有9个不同的数字。
我想创建一个for/while循环,对于每个循环,将一行的第8和第9个整数存储为变量,以便我可以对它们进行一些计算。然后循环将移动到下一行,将该行的第8和第9个数字存储为相同的变量,这样我就可以对它进行相同的计算,当我用完行时结束。
我的问题与读取文件无关,我只是感到困惑,我如何告诉它只从每行取第8和第9个值。
谢谢你的帮助,非常感谢!
为可读性而不是速度而设计。它也不检查输入文件的格式是否正确。
template<class T> ConvertFromString(const std::string& s)
{
std::istringstream ss(s);
T x;
ss >> x;
return x;
}
std::vector<int> values8;
std::vector<int> values9;
std::ifstream file("myfile.txt");
std::string line;
while (std::getline(file, line))
{
std::istringstream ss(line);
for (int i = 0; i < 9; i++)
{
std::string token;
ss >> token;
switch (i)
{
case 8:
{
values8.push_back(ConvertFromString<int>(token));
}
break;
case 9:
{
values9.push_back(ConvertFromString<int>(token));
}
break;
}
}
}
首先,分割字符串,然后使用atoi
将它们转换为数字。然后,您将从带有数字的数组或向量中获取第8和第9个值。
//Split string
std::vector<std::string> &split(const std::string &s, char delim, std::vector<std::string> &elems) {
std::stringstream ss(s);
std::string item;
while (std::getline(ss, item, delim)) {
elems.push_back(item);
}
return elems;
}
std::vector<std::string> split(const std::string &s, char delim) {
std::vector<std::string> elems;
split(s, delim, elems);
return elems;
}
//new code goes here
std::string line;
std::vector<std::string> lineSplit = split(line, ' ');
std::vector<int> numbers;
for (int i = 0; i < lineSplit.size(); i++)
numbers.push_back(atoi(lineSplit[i]);//or stoi
int numb1 = numbers[7];//8th
int numb2 = numbers[8];//9th
相关文章:
- C++ - 忽略并从其他文件获取数据
- 如何从网站获取数据并将其传输到数据库?
- 与多个 for 循环与单个 for 循环 wrt 相关的性能从多映射获取数据
- 如何从 CSV 获取数据并将其存储在 C++ 中的表对象中
- 获取 R 数据帧的内存地址
- C++ 如何从虚拟类的模板化子类中获取数据?
- 如何在C++中使用带有SFML的http reqest从节点.js服务器获取数据?
- 连接到远程存储库并获取数据
- 使用WiFi.h从WiFiClient ESP32获取数据
- CSV文件未从缓冲区获取数据
- C++从双指针获取数据
- C++ 从文件中获取数据时使用 strcpy 和 strcmp 按字母顺序对数组进行排序?
- 使用 Recvfrom 获取数据
- C 编程:在循环时运行 2 并从 loop1 获取数据的随机结果
- 复制构造函数并从方法中获取数据
- 如何在运行时从平面缓冲区获取数据值和数据类型
- 在C J2ME中读取Excel文件,并从ITQ获取数据
- 如何通过NodeMCU从Web获取数据
- 获取数据QFUTUREWATCHER
- 从文件中获取数据时如何放置换行符?