【发布时间】:2020-11-05 05:41:59
【问题描述】:
给定一个具有以下固定内容的文本文件(只有两行,仅此而已):
43 65 123 13 41
83 67 22
我需要把它变成一个向量数组,我可以在其中应用 name.size() 来找出数组的长度,并将其中的整数用于其他目的。
结果应该是:
Array 1: 43 65 123 13 41
Array 2: 83 67 22
Array 1 Length: 5
Array 2 Length: 3
我已成功读取文本文件并使用 .push_back() 添加内容。但是,当我计算向量 .size() 时,它返回 2,我意识到它将每一行视为数组中的一个元素。
解决这个问题的方法是什么?
编辑:
添加了sn-p的代码:
vector <string> readFile(const string& fileName)
{
ifstream source;
source.open(filename);
vector <string> lines;
string line;
while(getline(source, line)
{
lines.push_back(line);
} return lines;
}
int main(int argc, char ** argv)
{
string inputFile(argv[1]);
vector <string> fileData = readFile(inputFile);
// Check vector
for(auto i : fileData)
cout << i << endl;
// Check vector length
cout << fileData.size() << endl;
}
【问题讨论】:
-
请以minimal reproducible example 的形式包含您的尝试。如果文件的内容总是两行,为什么不使用固定大小的向量数组来代替,例如
std::array<std::vector<int>, 2>? -
这可以通过
std::getline和std::istringstream来完成 -
如上。这个任务有两个部分,首先读取每一行,然后从每一行读取每个整数。你写的代码能做到这一点吗?很难说,因为你还没有发布你的代码。始终发布您的代码。
-
在互联网上搜索“c++ 读取文件空间分隔的整数”。 StackOverflow 上已经有太多类似的问题了。
-
恕我直言,您最好的方法是将一行作为文本读取,使用
std::istringstream将数字提取到向量中。将此向量分配给外部向量。