1.string与int之间的相互转化问题
(1)int转string:使用to_string函数
引入头文件:
#include<string>
转int,float,double都可以
string to_string (int val);
string to_string (long val);
string to_string (long long val);
string to_string (unsigned val);
string to_string (unsigned long val);
string to_string (unsigned long long val);
string to_string (float val);
string to_string (double val);
string to_string (long double val);
代码:
#include <iostream>
#include<string>
using namespace std;
int main()
{
string s;
int m = 10;
float m2 = 1.234;
double m3 = 1.234;
s = to_string(m3);
cout << s << endl;
return 0;
}
(2)string转int:stoi函数或者atoi函数
引入头文件:
#include<string>
stoi函数与atoi函数的区分:
相同点:
①都是C++的字符处理函数,把数字字符串转换成int输出
②头文件都是#include<string>
不同点:
①atoi()的参数是 const char* ,因此对于一个字符串str我们必须调用 c_str()的方法把这个string转换成 const char*类型的,而stoi()的参数是const string*,不需要转化为 const char*;
如图:
②stoi()会做范围检查,默认范围是在int的范围内的,如果超出范围的话则会runtime error!
使用:
#include <iostream>
#include<string>
using namespace std;
int main()
{
string s = "123";
int m, n;
m = stoi(s);
n = atoi(s.c_str());
cout << m << " " << n << endl;
return 0;
}
2.一维数组,二维数组的初始化问题
(1)一般方法:使用for循环进行初始化
#include <iostream>
#define MAX 10
using namespace std;
int main()
{
int array[MAX];
for (int i = 0; i < MAX; i++) {
array[i] = 1;
}
for (int i = 0; i < MAX; i++) {
cout << array[i] << " ";
}
return 0;
}
(2)使用fill函数
fill函数可以为数组或者vector中的每个元素赋以相同的值,通常用于初始化!
初始化一维数组:
#include <iostream>
#define MAX 10
using namespace std;
int main()
{
int array[MAX];
fill(array, array + MAX, -1);
for (int i = 0; i < MAX; i++) {
cout << array[i] << " ";
}
return 0;
}
初始化二维数组:
注意!这里的fill函数的写法与初始化一维数组的不一样!
fill(array, array + MAX, -1);
fill(array[0], array[0] + MAX * MAX, -1);
初始化二维数组一定要是array[0]。如果写成这样,会报错:
fill(array, array + MAX * MAX, -1);
#include <iostream>
#define MAX 10
using namespace std;
int main()
{
int array[MAX][MAX];
fill(array[0], array[0] + MAX * MAX, -1);
for (int i = 0; i < MAX; i++) {
for (int j = 0; j < MAX; j++) {
cout << array[i][j] << " ";
}
cout << endl;
}
return 0;
}