C++菜鸟必看——string字符串使用(上)

①输入

一,cin<<变量名;

最简单的输入方法(不能输入空格)

推荐指数:75%

二,getline(cin,变量名);

较有水平,可输入空格

推荐指数:100%

番外篇①:cin与getline混用

程序:

#include <bits/stdc++.h>
using namespace std;
int main(){
    cout<<"输入";
	string a,b;
	cin>>a;
	getline(cin,b);
    cout<<"输出";
	cout<<a<<","<<b;
    return 0;
}

尴尬的程序结果:

问题:b消失了!

解决方法:

F1:统一输入方法

#include <bits/stdc++.h>
using namespace std;
int main(){
    cout<<"输入";
	string a,b;
	getline(cin,a);
	getline(cin,b);
    cout<<"输出";
	cout<<a<<","<<b;
    return 0;
}

F2:输入两次b

#include <bits/stdc++.h>
using namespace std;
int main(){
    cout<<"输入";
	string a,b;
	cin>>a;
	getline(cin,b);
	getline(cin,b);
    cout<<"输出";
	cout<<a<<","<<b;
    return 0;
}

正确的输出结果:

正文结束,谢谢大佬!!!

(未完待续)

### C++ 字符串的基础知识 在 C++ 中,字符串可以通过两种主要方式来处理:字符数组和 `std::string` 类型。 #### 1. 字符数组表示法 C++ 继承自 C 的传统字符串表示方法——通过字符数组存储字符串。这种情况下,字符串是以 `\0` 结尾的字符序列[^1]。编译器会自动为字符串常量添加终止符 `\0`,因此无需手动指定它。例如: ```cpp #include <iostream> using namespace std; int main() { char site[7] = {'R', 'U', 'N', 'O', 'O', 'B', '\0'}; cout << "菜鸟教程: "; cout << site << endl; return 0; } ``` 上述代码展示了如何定义并打印一个简单的字符串。注意,虽然这里显式地设置了 `\0`,但在实际开发中通常可以省略这一部分,因为编译器会自动完成此操作。 #### 2. 获取字符串长度 对于基于字符数组的传统字符串,获取其长度的方法通常是调用标准库函数 `strlen()`,该函数位于 `<cstring>` 头文件中[^2]。下面是一个例子: ```cpp #include <iostream> #include <cstring> // 包含 strlen 函数声明 using namespace std; int main() { const char* str = "Hello, world!"; size_t length = strlen(str); cout << "The string \"" << str << "\" has a length of " << length << "." << endl; return 0; } ``` 这段程序计算了一个固定字符串 `"Hello, world!"` 的长度,并将其输出到控制台。 #### 3. 使用 `std::string` 现代 C++ 推荐使用更高级别的抽象类 `std::string` 来管理字符串数据结构。相比原始字符数组,这种方式提供了更多的功能性和安全性支持。要使用 `std::string` 需要引入头文件 `<string>`。以下是几个常见的操作实例: - **创建字符串对象** ```cpp #include <iostream> #include <string> using namespace std; int main() { string greeting = "Hello"; cout << greeting << endl; return 0; } ``` - **连接两个字符串** ```cpp #include <iostream> #include <string> using namespace std; int main() { string firstPart = "Hello"; string secondPart = ", World!"; string fullGreeting = firstPart + secondPart; cout << fullGreeting << endl; return 0; } ``` - **访问单个字符** 可以像对待数组一样索引 `std::string` 对象中的每一个字符位置(从零开始计数)。 ```cpp #include <iostream> #include <string> using namespace std; int main() { string word = "example"; for (size_t i = 0; i < word.length(); ++i) { cout << "Character at position " << i << ": '" << word[i] << "'" << endl; } return 0; } ``` - **查找子串的位置** 利用成员函数 `find()` 查找某个特定模式首次出现的地方;如果未找到,则返回特殊值 `npos` 表示失败。 ```cpp #include <iostream> #include <string> using namespace std; int main() { string text = "This is an example."; size_t pos = text.find("is"); if(pos != string::npos){ cout << "'is' found at index : " << pos << endl; }else{ cout << "'is' not found."<<endl; } return 0; } ``` 以上介绍了几种基础但重要的字符串操作技巧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值