校招C++笔试ACM模式输入处理
Posted 狱典司
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了校招C++笔试ACM模式输入处理相关的知识,希望对你有一定的参考价值。
以整型的一维和二维数组为例,构建输入:
//# include <bits/stdc++.h>
# include <iostream>
# include <string>
//如果编译器的<string> 头文件支持 stoi(), 那么就不用<stdlib.h>了,它唯一的作用是提供atoi函数
# include <stdlib.h>
# include <sstream>
# include <vector>
using namespace std;
/* ------------- 一维数组的输入 ---------------- */
/* 查看一维数组 */
void showOneDimVec( const vector<int> &nums )
cout << "数组长度为:" << nums.size() << endl << "[ ";
for( int num : nums ) cout << num << " ";
cout <<"]"<< endl;
/* 输入一行不定长的一维数组 */
void getOneDimVec( vector<int> &nums, const char &split )
string line, elm;
if( getline(cin, line) )
stringstream ss(line);
while( getline(ss, elm, split) )
nums.push_back(atoi(elm.c_str()));
/* 先写定长度,再写入数组 */
void getOneDimVecByLen( vector<int> &nums, const char &split )
int len= 0;
cin >> len;
nums.resize(len, 0);
//舍去缓存区中被cin丢弃的换行符
cin.ignore();
string line, elm;
int i = 0;
if( getline( cin, line ) )
stringstream ss(line);
// 忽略超出长度的部分
while( getline(ss, elm, split) && i < len)
nums[i ++] = atoi(elm.c_str());
/* ------------- 二维数组的输入 ---------------- */
/* 输出二维数组 */
void showTwoDimVec( const vector<vector<int>> &nums )
int row = nums.size();
int col = row==0?0:(nums[0].size());
cout << "二维数组规模:" << row << "行 " << col << "列" << endl;
for( vector<int> vec : nums )
cout << "[ ";
for( int num : vec ) cout << num << " ";
cout << "]" << endl;
/* 二维矩阵的输入, 默认不靠输入指定长度 */
void getTwoDimVec( vector<vector<int>> &nums, int &row, int &col, const char &split, const bool isDiyLen = false )
if( isDiyLen )
cin >> row; cin >> col; cin.ignore();
nums.resize( row, vector<int>(col, 0) );
string line, elm;
for( int i = 0, j = 0; i < row; i ++ )
if( getline(cin, line) )
j = 0;
stringstream ss(line);
while( getline(ss, elm, split) && j < col )
nums[i][j ++] = atoi( elm.c_str() );
/* 二维--测试 */
void testTwoDimVec()
vector<vector<int>> nums;
int row = 0, col = 0;
while(1)
getTwoDimVec( nums, row, col, ' ', true );
showTwoDimVec( nums );
return;
/* 一维--测试 */
void restOneDimVec()
vector<int> nums;
while(1)
getOneDimVecByLen(nums, ' ');
showOneDimVec(nums);
return;
int main()
testTwoDimVec();
return 0;
以上是关于校招C++笔试ACM模式输入处理的主要内容,如果未能解决你的问题,请参考以下文章