在 C++ 中打印向量向量的元素时输出错误
Wrong output when printing elements of a vector of vectors in C++
我主要有这个:
vector<vector<u8>> matrix(size.first, vector<u8>(size.second));
for(auto i = 0; i < matrix.size(); ++i){
for(auto j = 0; j < matrix[0].size(); ++j){
matrix[i][j] = 5;
}
}
print_matrix(matrix);
函数print_matrix是:
void print_matrix(vector<vector<u8>>& m){
cout << "_______________________\n";
for(size_t i (0) ; i < m.size(); ++i){
auto& row = m[i];
for(size_t j (0); j < row.size(); ++j){
cout << row[j] << "-";
}
cout << endl;
}
}
我期望在 stdout 上打印一个全为 5 的矩阵,但我却得到:
_______________________
-----
-----
-----
-----
-----
为什么输出中没有打印数字?
尝试使用基于范围的 for 循环,例如:
void print_matrix(std::vector<std::vector<u8>> const& m){
std::cout << "_______________________\n";
for (auto const& i : m) {
for (auto const j : i){
std::cout << static_cast<unsigned>(j) << "-";
// or
// std::cout << +j << "-";
}
std::cout << std::endl;
}
}
请记住,uint8_t
被认为是原始字符,因此需要将其转换为 unsigned int
才能将其输出为数值。
我主要有这个:
vector<vector<u8>> matrix(size.first, vector<u8>(size.second));
for(auto i = 0; i < matrix.size(); ++i){
for(auto j = 0; j < matrix[0].size(); ++j){
matrix[i][j] = 5;
}
}
print_matrix(matrix);
函数print_matrix是:
void print_matrix(vector<vector<u8>>& m){
cout << "_______________________\n";
for(size_t i (0) ; i < m.size(); ++i){
auto& row = m[i];
for(size_t j (0); j < row.size(); ++j){
cout << row[j] << "-";
}
cout << endl;
}
}
我期望在 stdout 上打印一个全为 5 的矩阵,但我却得到:
_______________________
-----
-----
-----
-----
-----
为什么输出中没有打印数字?
尝试使用基于范围的 for 循环,例如:
void print_matrix(std::vector<std::vector<u8>> const& m){
std::cout << "_______________________\n";
for (auto const& i : m) {
for (auto const j : i){
std::cout << static_cast<unsigned>(j) << "-";
// or
// std::cout << +j << "-";
}
std::cout << std::endl;
}
}
请记住,uint8_t
被认为是原始字符,因此需要将其转换为 unsigned int
才能将其输出为数值。