string append()方法的常用方法
append函数是向string的后面追加字符或字符串。
1).向string的后面加C-string
string s = “hello “; const char *c = “out here “;
s.append(c); // 把c类型字符串s连接到当前字符串结尾
s = “hello out here”;
2).向string的后面加C-string的一部分
string s=”hello “;const char *c = “out here “;
s.append(c,3); // 把c类型字符串s的前n个字符连接到当前字符串结尾
s = “hello out”;
3).向string的后面加string
string s1 = “hello “; string s2 = “wide “; string s3 = “world “;
s1.append(s2); s1 += s3; //把字符串s连接到当前字符串的结尾
s1 = “hello wide “; s1 = “hello wide world “;
4).向string的后面加string的一部分
string s1 = “hello “, s2 = “wide world “;
s1.append(s2, 5, 5); 把字符串s2中从5开始的5个字符连接到当前字符串的结尾
s1 = “hello world”;
string str1 = “hello “, str2 = “wide world “;
str1.append(str2.begin()+5, str2.end()); //把s2的迭代器begin()+5和end()之间的部分连接到当前字符串的结尾
str1 = “hello world”;
5).向string后面加多个字符
string s1 = “hello “;
s1.append(4,’!’); //在当前字符串结尾添加4个字符!
s1 = “hello !!!!”;
C++ string append()添加文本
使用append()添加文本常用方法:
直接添加另一个完整的字符串:
如str1.append(str2);
添加另一个字符串的某一段子串:
如str1.append(str2, 11, 7);
添加几个相同的字符:
如str1.append(5, ‘.’);
注意,个数在前字符在后.上面的代码意思为在str1后面添加5个".".
printf string.c_str() char[]
改编自:
https://blog.csdn.net/qq_36561697/article/details/81182408
以下代码错误,不能直接printf string。
int main() {
std::string str1 = "test abc";
printf("%s", str1);
}
正确代码应为:
int main() {
std::string str1 = "test abc";
printf("%s", str1.c_str());
}
printf输出字符串是针对char*或char[]的。即printf只能输出C语言中的内置数据,string不是c语言内置数据。
以上代码中str1是string类型的对象,并非单单只有字符串,其内还有许多用于操作的函数,于是&str1并非字符串“test abc”的首地址,而是str1这个对象的首地址。
但string类型的数据可以用cout直接输出:
int main() {
std::string str1 = "This is string.";
cout << str1 << endl;
}
对于char[]或char*定义的字符串可以直接printf。
如下代码正确:
int main() {
char str1[] = "123456";
const char* str2 = "test";
printf("%s\n",str1);
printf("%s", str2);
}
运行结果为:
123456
test
substr()详解
s.substr(pos, n):
返回一个string,包含s中从pos开始的n个字符的拷贝(pos的默认值是0,n的默认值是s.size() - pos,即不加参数会默认拷贝整个s)
若pos的值超过了string的大小,则substr函数会抛出一个out_of_range异常;若pos+n的值超过了string的大小,则substr会调整n的值,只拷贝到string的末尾。