c++ - 如何将文本文件传递到 C++ 中的二维数组?
问题描述
我需要将包含逗号分隔整数的文本文件传递到 C++ 中的二维数组中。例如,如果文本文件看起来像:
2,3,56,4
3,5,7,1
0,23,9,87
2,4,5,2
我需要把它放到一个二维数组中,以便我以后可以执行计算(我知道该怎么做)。我有以下代码,但我非常挣扎。任何帮助,将不胜感激。谢谢你。
#include <iostream>
#include <sstream>
#include <string>
#include <fstream>
using namespace std;
int main()
{
const int row =4;
const int col =4;
int array[row][col];
int r =0;
int c =0;
ifstream inputfile("numbers.txt");
if (!inputfile.is_open())
{
cout<<"error"<<endl;
}
string line,num;
int number;
while(get line(inputfile,line))
{
string stream ss(line);
getline(ss,num,',');
number = stoi(num);
for (int r=0; r<row;r++)
{
for (int c=0; c<col; c++)
{
array[row][col] =number;
}
}
inputfile.close();
return 0;
}
解决方案
这是一个简单的例子:
static const int MAX_ROWS = 4;
static const int MAX_COLUMNS] = 4;
int matrix[MAX_ROWS][MAX_COLUMNS];
//...
for (int row = 0; row < MAX_ROWS; ++ row)
{
std::string row_text;
std::getline(inputfile, row_text);
std::istringstream row_stream(row_text);
for (int column = 0; column < MAX_COLUMNS; ++column)
{
int number;
char delimiter;
row_stream >> number >> delimiter;
matrix[row][column] = number;
}
}
以上假设文本文件包含确切数量的数字。
由于行尾的分隔符不同,因此每行都作为字符串读取,然后用于std::istringstream
将流视为文件。
推荐阅读
- nativescript - ValueError:构建nativescript应用程序时没有结束引号
- azure - 使用 Azure Cli 从 Azure 订阅中删除部署
- html - 如何在 CSS 网格间隙之间填充文本?
- julia - 如何使规范化以适用于 Julia 中的所有类型的数组?
- winforms - 如何拦截winform文本框选择右键复制
- swift - 我如何在中断状态下快速获取我的代码行而不是后台进程
- android - Android:如何为暗模式切换主题?
- python - 我如何保存复选框中的输入,其中当我只选中复选框上的一个选项时,它给了我一个错误
- javascript - DataLayer.push 不适用于外部 JavaScript
- java - 在 Java 中从 System.in 获取 int 数组的简单方法