C++中如何接收输入的字符串

本文介绍了在C++中使用string类型进行用户输入的方法,并对比了使用cin与getline的区别。使用getline能够完整读取包含空格的字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  注意到C++课本中关于接收用户输入的字符串都是用的字符数组, 看着极为不舒服, 所以试了一下直接用string变量接收, 发现没问题, 代码如下:

 1 #include<isotream>
 2 #include<string>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7       string strTest;
 8       cout<<"输入字符串"<<endl;
 9       cin>>strTest; 
10       cout<<strTest;        
11       return 0;    
12 }

注意引入string库函数

另外注意到上面直接输入遇到空格就终止输入了, 所以要想保留空格,可以修改代码如下

1 #include<isotream>
2 #include<string>
3 using namespace std; 4 5 int main() 6 { 7 string strTest; 8 cout<<"输入字符串"<<endl; 9 getline(cin, strTest); 10 cout<<strTest; 11 return 0; 12 }

使用getline函数即可读取包括space在内的字符.

转载于:https://www.cnblogs.com/tiny-rogue/archive/2013/04/30/a3733.html

### C++输入字符串的方法 在 C++ 编程语言中,有多种方法用于输入字符串。以下是常见的几种实现方式及其特点: #### 使用 `cin` 输入字符串 `cin` 是标准输入流对象的一部分,适用于简单的字符串输入操作。然而,它会在遇到空白字符(如空格或制表符)时停止读取[^1]。 ```cpp #include <iostream> using namespace std; int main() { string s; cin >> s; // 遇到第一个空格即停止 cout << s << endl; } ``` 此方法适合仅需获取单个单词的情况。 --- #### 使用 `cin.get()` 接收带空格的字符串 `cin.get(char *buffer, int length)` 可以接收一行包含空格的字符串,并将其存储在一个字符数组中。需要注意的是,该函数最多读取指定数量减一的字符,并自动追加终止符 `\0`。 ```cpp #include <iostream> using namespace std; int main() { char buffer[50]; cin.get(buffer, 20); // 最多读取19个字符加上'\0' cout << buffer << endl; } ``` 如果输入超过设定的最大长度,则多余部分会被截断并留在输入缓冲区中等待后续处理。 --- #### 利用 `getline(cin, string_variable)` 获取整行数据 对于需要捕获整个输入行(含空格),推荐使用 `std::getline` 函数。相比其他选项,这种方式更加灵活且安全[^2]。 ```cpp #include <iostream> #include <string> // 引入头文件支持string类 using namespace std; int main(){ string line; getline(cin, line); cout << "You entered: " << line << endl; } ``` 注意:当调用了某些基于控制台的操作之后再执行 `getline` ,可能因残留换行符而导致意外行为发生。此时可以通过额外的一次无意义读取消除影响。 --- #### 应用 `gets()` 和其替代方案 尽管传统上有开发者习惯于采用 `gets()` 来简化键盘录入过程,但由于存在潜在的安全隐患,在现代编译器环境下已被废弃不再建议继续沿用[^3]。作为代替品之一可考虑如下循环结构模拟相似功能: ```cpp char ch; int i=0; while ((ch = getchar()) != '\n') { str[i++] = ch; } str[i]='\0'; ``` 以上片段展示了如何通过逐字节抓取直至回车结束来构建自定义版本的字符串收集逻辑。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值