本章演示如何操作C++文本字符串:字符数组的更简单、更强大的替代。
创建字符串变量
与char、int、float、double和bool数据类型不同,C++中没有原生的"字符串"数据类型--但是它的库类提供了字符串对象,用来模拟字符串数据类型。为了使程序能够使用它,必须在程序开始时用#include指令添加该库。像类库一样,库也是std命名空间的一部分,它被C++标准库类所使用。这意味着字符串对象可以被称为std::string,或者在程序开始时包含using namespace std;指令时更简单地称为string。字符串变量可以通过在变量名后面的圆括号中加入一个文本字符串来初始化。在C++中,文本字符串必须始终包含在""双引号字符中--""单引号只用于包围char数据类型的字符值。与C语言程序员必须使用的char数组相比,C++字符串变量更容易操作,因为它可以自动调整大小以适应任何文本字符串的长度。在较低的层次上,文本仍然是例如句子,可以使用getline函数。这个函数需要两个参数来指定字符串的来源和目的地。例如,其中cin函数是源,名为"str"的字符串变量是目的地。getline(cin,str)。getline函数从输入"流"中读出,直到遇到行末的换行符--当你点击Return时产生。在混合使用cin和getline函数时必须注意,因为getline函数会自动读取输入缓冲区中的任何内容--给人以程序跳过一条指令的印象。cin.ignore函数可以用来克服这个问题,它忽略了留在输入缓冲区的内容。#include
#include
using namespace std;
int main{
string name;
cout << "Please enter your full name: ";
cin >> name;
cout << "Welcome " << name << endl;
cout << "Please re-enter your full name: ";
// Uncomment the next line to correct this program.
// cin.ignore(256, '\n');
getline(cin, name);
cout << "Thanks, " << name << endl;
return 0;
}
cin.ignore函数的参数指定它最多应丢弃256个字符,并在遇到换行符时停止。字符串转换
convert.cpp
#include
#include
#include
using namespace std;
int main(){
string term = "100"; // String to convert to int.
int number = 100; // Int to convert to string.
string text; // String variable for converted int.
int num; // Int variable for converted string.
stringstream stream; // Intermediate stream object. // Convert string to int.
stream << term; // Load string int ostream.
stream >> num; // Extract stream to int.
num /= 4; // Manipulate the int.
cout << "Integer value: " << num << endl;
cout << "Integer value: " << stoi(term) << endl; // Reset the stream object back to new.
stream.str(""); // Reset the stream to an empty string.
stream.clear(); // Reset the stream bit flags (good, bad, eof, fail).
// Convert int to string.
stream << number; // Load int int ostream.
stream >> text; // Extract stream to string.
text += "PerCent"; // Manipulate the string.
cout << "String value: " << text << endl;
cout << "Integer value: " << to_string(number) << endl;
return 0;
}
符串的特性
C++库提供了许多函数,使我们可以轻松地处理字符串。与char数组不同,字符串变量会动态放大以容纳分配给它的字符数,它当前的内存大小可以通过库的capacity函数来显示。一旦放大,分配的内存大小将保持不变,即使有更小的字符串被分配给该变量。features.cpp
#include
#include
using namespace std;
void computeFeatures(string);
int main{
string text = "C++ is fun";
computeFeatures(text);
text += " for everyone";
computeFeatures(text);
text = "C++ Fun";
computeFeatures(text);
text.clear();
computeFeatures(text);
return 0;
}
void computeFeatures(string text){
cout << endl << "String: " << text << endl;
cout << "Size: " << text热点:比特币字符 GO语言 比特币指南 nft指南 币圈指南