首页 > 编程知识 正文

excel中countif和or函数嵌套使用,excel中用lookup函数判断成绩等级

时间:2023-05-05 13:58:15 阅读:251425 作者:4802

部分内容翻译自 https://www.geeksforgeeks.org/stdstringappend-vs-stdstringpush_back-vs-operator-c/?ref=lbp

引言

C++的string类中,要想在字符串后附加字符,可以使用append函数、push_back函数或者是+=运算符,这些附加字符的方法其实现不尽相同,因此应用场景也不同。
首先我们先一窥源码(gcc 4.9.2):

basic_string.h:

//-------------------------------+=运算符重载部分---------------------------//追加 string 类型字符串 basic_string& operator+=(const basic_string& __str) { return this->append(__str); }//追加 cstring 类型字符串 basic_string& operator+=(const _CharT* __s) { return this->append(__s); }//追加单个字符 basic_string& operator+=(_CharT __c) { this->push_back(__c);return *this; }#if __cplusplus >= 201103L //追加字符类型的初始化列表 basic_string& operator+=(initializer_list<_CharT> __l) { return this->append(__l.begin(), __l.size()); } //-------------------------------append函数实现部分---------------------------//追加 string 类型字符串 basic_string& append(const basic_string& __str);//追加部分 string 类型字符串 basic_string& append(const basic_string& __str, size_type __pos, size_type __n);//追加部分 cstring 类型字符串 basic_string& append(const _CharT* __s, size_type __n);//追加 cstring 类型字符串 basic_string& append(const _CharT* __s) {__glibcxx_requires_string(__s);return this->append(__s, traits_type::length(__s)); }//追加多个字符 basic_string& append(size_type __n, _CharT __c);#if __cplusplus >= 201103L//追加字符类型的初始化列表 basic_string& append(initializer_list<_CharT> __l) { return this->append(__l.begin(), __l.size()); } #endif // C++11 template<class _InputIterator> basic_string&//附加给定范围内的多个字符 append(_InputIterator __first, _InputIterator __last) { return this->replace(_M_iend(), _M_iend(), __first, __last); } //-------------------------------push_back函数实现部分--------------------------- //追加单个字符 void push_back(_CharT __c) { const size_type __len = 1 + this->size();if (__len > this->capacity() || _M_rep()->_M_is_shared())this->reserve(__len);traits_type::assign(_M_data()[this->size()], __c);_M_rep()->_M_set_length_and_sharable(__len); }

从以上源码的角度来分析append函数、push_back函数和+=运算符的不同使用场景,就非常直观了:

+= 运算符:追加单个参数值。append 函数:允许追加多个参数值。push_back 函数:只能追加单个字符。 append()+=push_back全字符串(string)√√×部分字符串(substring)√××字符数组(char array)√√×单个字符(char)×√√迭代器范围(iterator range)√××返回值(return value)*this*thisnonecstring(char*)√√×示例 1 全字符串(string) += 运算符:可以追加完整字符串。append 函数:也允许追加完整字符串。push_back 函数:不允许追加完整字符串。 // CPP code for comparison on the // basis of appending Full String #include <iostream> #include <string> using namespace std; // Function to demonstrate comparison among // +=, append(), push_back() void appendDemo(string str1, string str2) { string str = str1; // Appending using += str1 += str2; cout << "Using += : "; cout << str1 << endl; // Appending using append() str.append(str2); cout << "Using append() : "; cout << str << endl; } // Driver code int main() { string str1("Hello World! "); string str2("GeeksforGeeks"); cout << "Original String : " << str1 << endl; appendDemo(str1, str2); return 0; } 2 追加部分字符串(substring) += 运算符:不允许追加部分字符串。append 函数:该函数允许追加部分字符串。push_back 函数:不支持追加部分字符串。 // CPP code for comparison on the basis of // Appending part of string #include <iostream> #include <string> using namespace std; // Function to demonstrate comparison among // +=, append(), push_back() void appendDemo(string str1, string str2) { // Appends 5 characters from 0th index of // str2 to str1 str1.append(str2, 0, 5); cout << "Using append() : "; cout << str1; } // Driver code int main() { string str1("GeeksforGeeks "); string str2("Hello World! "); cout << "Original String : " << str1 << endl; appendDemo(str1, str2); return 0; } 3 追加 C-string(char*) += 运算符:允许追加 C-string。append 函数:同样允许追加 C-string。push_back 函数:不允许使用 push_back 函数追加 C-string。 // CPP code for comparison on the basis of // Appending C-string #include <iostream> #include <string> using namespace std; // Function to demonstrate comparison among // +=, append(), push_back() void appendDemo(string str) { string str1 = str; // Appending using += str += "GeeksforGeeks"; cout << "Using += : "; cout << str << endl; // Appending using append() str1.append("GeeksforGeeks"); cout << "Using append() : "; cout << str1 << endl; } // Driver code int main() { string str("World of "); cout << "Original String : " << str << endl; appendDemo(str); return 0; } 4 追加字符数组(char array) += 运算符:允许追加字符数组。append 函数:同样允许追加字符数组。push_back 函数:不支持追加字符数组。 // CPP code for comparison on the basis of // Appending character array #include <iostream> #include <string> using namespace std; // Function to demonstrate comparison among // +=, append(), push_back() void appendDemo(string str) { char ch[6] = {'G', 'e', 'e', 'k', 's', ''}; string str1 = str; // Appending using += str += ch; cout << "Using += : " << str << endl; // Appending using append() str1.append(ch); cout << "Using append() : "; cout << str1 << endl; } // Driver code int main() { string str("World of "); cout << "Original String : " << str << endl; appendDemo(str); return 0; } 5 追加单个字符(char) += 运算符:允许使用 += 运算符追加单个字符。append 函数:不允许追加单个字符。push_back 函数:支持追加单个字符。 // CPP code for comparison on the basis of // Appending single character #include <iostream> #include <string> using namespace std; // Function to demonstrate comparison among // +=, append(), push_back() void appendDemo(string str) { string str1 = str; // Appending using += str += 'C'; cout << "Using += : " << str << endl; // Appending using push_back() str1.push_back('C'); cout << "Using push_back : "; cout << str1; } // Driver code int main() { string str("AB"); cout << "Original String : " << str << endl; appendDemo(str); return 0; } 6 迭代器范围(iterator range) += 运算符:不支持迭代器范围。append 函数:支持迭代器范围。push_back 函数:不支持迭代器范围。 // CPP code for comparison on the basis of // Appending using iterator range #include <iostream> #include <string> using namespace std; // Function to demonstrate comparison among // +=, append(), push_back() void appendDemo(string str1, string str2) { // Appends all characters from // str2.begin()+5, str2.end() to str1 str1.append(str2.begin() + 5, str2.end()); cout << "Using append : "; cout << str1; } // Driver code int main() { string str1("Hello World! "); string str2("GeeksforGeeks"); cout << "Original String : " << str1 << endl; appendDemo(str1, str2); return 0; } 7 返回值(return value) += 运算符:返回 *thisappend 函数:返回 *thispush_back 函数:不返回值 // CPP code for comparison on the basis of // Return value #include <iostream> #include <string> using namespace std; // Function to demonstrate comparison among // +=, append(), push_back() string appendDemo(string str1, string str2) { // Appends str2 in str1 str1.append(str2); // Similarly with str1 += str2 cout << "Using append : "; // Returns *this return str1; } // Driver code int main() { string str1("Hello World! "); string str2("GeeksforGeeks"); string str; cout << "Original String : " << str1 << endl; str = appendDemo(str1, str2); cout << str; return 0; }

(全文完)

win7电脑文件夹如何加密计算机毕业设计Java校服征订系统(源码+系统+mysql数据库+Lw文档)nslookup命令如何使用-linux运维

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。