#CPP14. 【Level 1】string
【Level 1】string
string
众所周知,C 语言中的字符串处理较为麻烦与困难。C++ 使用 string
来处理字符串,除非是接口限制,否则应坚持使用 string
。
头文件为 <string>
string 和 char
如果你只是想粗浅地理解 string
,那么将其理解为 vector<char>
是一个可接受的近似(如果想要深入了解,就会发现其中的不同,string
实质上是一个 basic_string<char>
)。
string 的构造与输入输出
string
是一个类,与声明变量的格式相同,即 string 字符串名
即可。
string s;
直接使用 =
就可以对 string
变量进行赋值,例如
string s = "Hello";
输入输出也非常简单,直接用 cin
和 cout
输入输出即可,
当然,如果你使用 cin
输入 string
,将在空白字符(空格、Tab、换行符等)中止,例如
string s;
cin >> s;
此时输入数据如果是
Hello, World!
则输入后 s
的值是 Hello,
。
值得一提的是,cin
输入时会先略过所有分隔符,从第一个非分隔符开始读取,例如输入为
to be or not to be
时用 cin
连续读入 string
string s;
while (cin >> s) {
cout << "*" << s << "*" << endl;
}
将得到
*to*
*be*
*or*
*not*
*to*
*be*
如果需要输入一整行的字符,意味着我们应该只在换行符时中断输入,这时候就需要使用 getline()
,如下所示,就可以得到从当前位置一直到换行符的所有字符,作为一个字符串存在 s
中。
string s;
getline(cin, s);
string 的基本操作
遍历字符
string
可以直接通过下标访问其中的字符,一般来说,我们先使用 length()
确定字符的个数,再遍历其中的字符,如下所示
string s = "Algo";
for (int i = 0; i < s.length(); ++i) {
cout << s[i];
}
连接字符串与其它
如果要连接两个 string
,直接使用 +
即可
string a = "Hello, ", b = "World!";
string res = a + b;
一个 char
也可以直接和 string
用 +
连接,例如
string a = "Hi";
a += '!';
int
等类型不能直接跟在 string
后面,但我们可以使用 to_string()
将其转化为 string
,例如
string salary_str = "Alice: ";
int salary = 500;
salary_str += to_string(salary);
string 的常用操作
判空
使用 empty()
判断是否为空
string str;
if (str.empty()) {
// do something ...
}
截取子串
使用 substr(size_t pos, size_t count)
获取,得到的是位置在 [pos, pos + count)
的一个子串
string str = "HUST";
cout << str.substr(2, 2) << endl;
得到的输出结果是 ST
查找
使用 find(c)
进行字符的查找,字符串同理,例如
void print(string::size_type n) {
if (string::npos == n) cout << "not found! n == npos\n";
else cout << "found @ n = " << n << endl;
}
int main() {
string::size_type n;
string const s = "This is a string";
n = s.find('a');
print(n);
n = s.find('q');
print(n);
}
得到输出
found @ n = 8
not found! n == npos
Description
给定一个由多个单词组成的字符串 ,将 中的每个单词首字母转换为大写,其余字母转换为小写。
Format
Input
一行字符串,由若干单词组成,单词之间由空格分隔,不含标点符号。
Output
一行字符串,每个单词的首字母大写,其他字母小写;每个单词用 一个 空格分隔。
Samples
hello world this is a cplusplus string exercise
Hello World This Is A Cplusplus String Exercise
to bE oR noT to bE is a quEStion
To Be Or Not To Be Is A Question
Related
In following contests: