C++语法
输入输出
cin
cout
在 <iostream>
中
cin
以空格为分隔接受输入。
| int a;
cin >> a;
cout << a << 'aaa' << endl;
string str;
cin >> str;
cout << str << endl;
|
<iomanip>
给出了 cout
的更多输出用法。
| int main(){
int i = 78;
cout << i << endl;
cout << dec << i << endl;//十进制
cout << oct << i << endl;//八进制
cout << hex << i << endl;//十六进制
cout << setiosflags(ios::uppercase);//字母大写
cout << hex << i << endl;//十六进制
cout << setbase(8) << i << endl;//八进制
}
|
setprecision(3)
为精度设置。
fixed
控制小数点后的精度。
| int main(){
double i = 3333.1415926;
cout << i << endl; //3333.14 默认六位有效数字
cout << setprecision(3) << i << endl;//3.33e+003
cout << setprecision(9) << i << endl;//3333.14159
cout << setiosflags(ios::fixed);
cout << i << endl;//3333.141592600
cout << fixed << setprecision(3) << i << endl;//3333.142
cout << setprecision(9) << fixed << i << endl;//3333.141592600
}
|
setiosflags(ios::showpoint)
强制六位有效数字。
setiosflags(ios::showpos)
强制显示正负号。
setiosflags(ios::left)
左对齐。
setw(int n)
宽度设置。
setfill(char c)
填充字符设置,默认空格。
resetiosflags(……)
取消设置。
string 字符串
在 string
库中。
构造
string str
:生成空字符串
string s(str)
:s = str
string s(str, begin,len)
:s = str[begin:begin+len]
string s(str, len)
:等同上条 begin = 0 的情况,str 为 字符指针。
string s(num ,c)
:生成num个c字符的字符串
string s(str, stridx)
:s = str[stridx:]
输入输出
| cin >> str; //空格截止
getline(cin, str); //'\n'截止
cout << str;
|
字符串连接
| a = 'hello';
b = 'world';
c = a + ' ' + b;
cout << c << endl;//hello world
|
其他成员函数
s.length()
返回字符串长度。
s.substr(pos, len)
返回 s[pos:pos+len]。
s.insert(pos, str)
在 pos 处插入 str。
s.erase(pos, len)
在 pos 处删除 len 大小的字符串。无 len 则删除到末尾
s.erase(std::find(s.begin(), s.end(), char))
删除 s 中的第一个 char 。
s.append(str)
在 s 末尾接上 str。
| int main()
{
std::string str = "std::string";
const char* cptr = "C-string";
const char carr[] = "range";
std::string result;
// 接入 n 个 字符
result.append(3, '*');
assert(result == "***");
// 接入 str 的前 n 个字符
result.append(cptr, 5);
assert(result == "***C-str");
// 接入整个字符串
result.append(1, ' ').append(cptr);
assert(result == "***C-str C-string");
// 接入 str[pos:pos+len]
result.append(str, 3, 2);
assert(result == "***C-str C-string::");
// 接入 前pos 到 后pos 不包括后部分
result.append(&carr[2], &carr[3]);
assert(result == "***C-str C-string::n");
// 接入初始化列表
result.append({'p', 'o', 's'});
assert(result == "***C-str C-string std::string::npos");
}
|
s.replace(pos, len, str);
将 s[pos:pos+len] 替换为 str。
s.find(str, pos)
从 pos 位置开始查找 str ,返回第一次出现的位置。pos 默认 0。
vector 变长数组
构造函数
vector<Type> varName;
构造一个空的 vector。
| int main()
{
// C++11 initializer list syntax:
std::vector<std::string> words1{"the", "frogurt", "is", "also", "cursed"};
std::cout << "1: " << words1;
// words2 == words1
std::vector<std::string> words2(words1.begin(), words1.end());
std::cout << "2: " << words2;
// words3 == words1
std::vector<std::string> words3(words1);
std::cout << "3: " << words3;
// words4 is {"Mo", "Mo", "Mo", "Mo", "Mo"}
std::vector<std::string> words4(5, "Mo");
std::cout << "4: " << words4;
}
|
获取长度
size()
返回 vector 中的元素个数。
元素操作
push_back(x)
在末尾插入元素。
pop_back()
返回并删除末尾的元素。
a1.swap(a2)
交换两个 vector。
erase(pos1,pos2)
删除 [pos1,pos2) 范围的元素,返回指向 pos2 的 iterator。
v[i]
访问元素。
遍历
iterator
使用遍历器。
for (int i = 0; i < v.size(); i++) v[i];
同数组。
for (auto &a : v)
依次取出 vector 中的元素。使用 &a
会使循环体的操作影响到 vector。使用 a
每次创建一个临时变量,不影响 vector。
set 集合
唯一有序的元素集合
构造函数
set<Type> s;
元素操作
insert(x)
末尾插入。
erase(x)
删除,返回删除个数。
find(x)
查找,返回指向查找元素的 iterator,查找不到则返回 s.end()
。
count(x)
计数,返回找到的个数。
map 字典
构造函数
map<Type1, Type2> m;
构造 m[Type1 x1] = Type2 x2;
元素操作
erase(x)
删除,返回删除个数。
count(x)
计数,返回查找到的个数。
find(x)
查找,返回 iterator,查找不到返回 m.end()