二维矢量打印
Two-dimensional vector printing
我有一个二维字符串向量,我需要打印出来。整个程序应该从txt文件中读取一行,将其中的每个单词存储为不同的元素,然后将"单词向量"推送到包含例如100行的向量中。我已经做好了一切,但是当我必须打印矢量时,问题就出现了。每行可以有不同的字数,例如:
我喜欢蛋糕
好多。
所以我不能使用:
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
cout << vec[i][j];
}
}
因为第二行不包含 3 个元素并且程序关闭.
知道怎么做吗?注意:我的讲师不接受C++11,因此基于C++98的解决方案将不胜感激。这是我的函数:
void readline(vector<vector<string> >& lines, int size)
{
vector<string> row;
string line, word;
fstream file;
istringstream iss;
int i;
file.open("ticvol1.txt", ios::in);
for (i = 0; i < size; i++)
{
getline(file, line);
iss.str(line);
while (iss >> word) row.push_back(word);
lines.push_back(row);
}
}
您可以按向量的大小轻松遍历向量,只需使用 size()
成员函数:
for (int i = 0; i < vec.size(); i++)
{
for (int j = 0; j < vec[i].size(); j++)
{
cout << vec[i][j];
}
}
如果你有一个向量的向量,那么你可以使用基于范围 for 语句的方式打印它
std::vector<std::vector<std::string>> v;
//...
for ( const auto &row : v )
{
for ( const auto &s : row ) std::cout << s << ' ';
std::cout << std::endl;
}
如果您需要基于 C++ 2003 的解决方案,则代码可能如下所示
for ( size_t i = 0; i < v.size(); i++ )
{
for ( size_t j = 0; j < v[i].size(); j++ ) std::cout << v[i][j] << ' ';
std::cout << std::endl;
}
使用函数size()
来获取元素的数量。
std::vector< std::vector<std::string> > vec;
for (unsigned int i = 0; i < vec.size(); ++i)
{
for (unsigned int j = 0; j < vec[i].size(); ++j)
{
cout << vec[i][j];
}
cout << std::endl;
}
我会将其更改为以下内容:
for (int i = 0; i < vec.size(); i++)
{
for (int j = 0; j < vec[i].size(); j++)
{
cout << vec[i][j];
}
}
相关文章:
- 将二维矢量传递给类
- 将值从二维数组输出到文本文件
- 我在二维向量中是否正确分配了内存
- 带结构的二维矢量:如何存储元素
- 在二维数组中查找最小值和最大值?
- 如何将文本文件读取到二维数组中并以 c++ 打印
- 重载运算符后打印二维数组<<
- 按列打印二维数组时出现问题
- 使用 pthread 打印二维数组
- 打印空白,而不是二维数组c++中的整数
- 根据用户输入对二维数组进行排序和打印
- 二维矢量打印
- 如何在C++中打印二维数组
- 无法将二维数组中的数据打印到C++的输出文件
- 从中心按顺时针展开螺旋线打印二维阵列
- 从对象打印二维矢量时出错
- 如何在类函数中打印二维数组
- 如何打印二维数组作为一个矢量
- 打印二维阵列
- 如何在二维指针数组中打印给定索引处的值