跳转至

Week1 Using Object

Format output

  • 首先需要使用<iomanip>库,即#include<iomanip>

  • std::setw用于设置输出字段的宽度,这只影响紧随其后的输出操作,例如

std::cout << std::setw(10) << 42 <<std::endl;  // "        42"(加上42总共宽度为10)
//下一个输出不受影响
std::cout << 12 << std::endl                            // "42"
  • std::setprecision用于设置浮点数的精度,与std::fixed一起使用时用于指定小数点后的位数;单独使用时用于指定有效数字总数
double value = 123.456789
std::cout << std::setprecision(4) << value << std::endl;                     // "123.5"
std::cout << std::fixed << std::setprecision(2) << vlaue << std::endl // "123.46"
  • std::setfill用于设置填充字符,与std::setw一起使用时特别有用:
// 默认填充字符是空格
std::cout << std::setw(10) << 42 << std::endl;                        // "        42"
std::cout << std::setw(10) << std::setfill('*') << 42 << std::endl // "********42"

String类

需要先包含string类的头文件:#<include string>

Input and Output

如果是想要读一个字符串。可以使用cin/cout

cin >> str;
cout << str;

如果想要读取一整行(包含空格),则需要getline(cin,str)或者getline(cin,str, ',')表示读取直到遇到','就停止

我们通常还会清除之前可能留在缓冲区的换行符,用到std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n')

std::string str;
// 清除之前可能留在缓冲区的换行符
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); //numeric_limits<streamsize>::max():设置最大忽略字符数,'\n':指定终止字符为换行符(\n)。当遇到换行符时,忽略操作会停止。
std::getline(std::cin,str) // 读取整行文本到string类型变量str中

如果想要从文件中读取一行字符串,则需要先用std::ifstream inputFile('example.txt')打开文件,然后逐行读取std::getline(inputFile,str,下面举一个具体的例子:

 // 打开文件
std::ifstream inputFile("example.txt");

// 检查文件是否成功打开
if (!inputFile.is_open()) {
    std::cerr << "无法打开文件!" << std::endl;
    return 1;
}

// 逐行读取
std::string line;
while (std::getline(inputFile, line)) {
    // 处理每一行
    std::cout << "读取的行: " << line << std::endl;
}

// 关闭文件
inputFile.close();

create a string

string(const char *p,int len);
string(const string & s2,int pos);
string(const string & s3,int pos, int len);

一些字符串函数

Sub-string

  • substr(int pos,int len)

Alter string

  • insert(size_t pos,const string&s);
  • erase(size_t pos = 0, size_t len = npos);
  • append(const string& str);
  • replace(size_t pos, size_t len, const string &str);

Search String

  • size_t find(const string& str, size_t pos = 0) const,这里我们介绍一下,find函数的返回类型是size_t,所以如果没有找到,返回值是string::npos而非-1。两个参数分别表示要找的字符串,以及开始查找的位置,函数最后的const后缀表示这个方法不会修改调用它的字符串对象,举一个具体的使用例子
size_t pos1 = text.find("Hello")

评论