C++输入不定长字符串方法
来源:互联网 发布:淘宝泄露客户信息处罚 编辑:程序博客网 时间:2024/06/07 04:46
在很多时候,我们对需要输入的字符串的长度并不可知,一般情况下,我们都通过设定一个范围来解决。下面我总结了一下如何输入字符串而不需要限定长度的一种方法及其代码实现举例。
由于我们不知道输入的大小,所以我们采用C++中string + vector<char>的方法来实现,我们先来看下面的例子:
通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。
比如字符串“abacacde”过滤结果为“abcde”。
【输入】 pInputStr: 输入字符串
lInputLen: 输入字符串长度
【输出】 pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长;
示例
输入:“deefd” 输出:“def”
输入:“afafafaf” 输出:“af”
输入:“pppppppp” 输出:“p”
下面是我写的代码:#include <iostream>#include <vector>#include <string>using namespace std;void stringFilter(vector<char> &pInputStr, long lInputLen, vector<char> &pOutputStr);int main(){vector<char> pInStr;vector<char> pOutStr;string str;cin>>str;int n=str.length(); //获取输入的字符串长度const char *TempInStr = str.c_str();//把string转换成char指针或者const char *TempInStr = str.data();for(int i=0;i<n;i++) //将输入的字符串赋给vector变量{pInStr.push_back(TempInStr[i]);}long length = pInStr.size();stringFilter(pInStr,length,pOutStr);for (vector<char>::size_type ix = 0; ix != pOutStr.size(); ++ix){ //输出结果cout<<pOutStr[ix];}system("pause");return 0;}void stringFilter(vector<char> &pInputStr, long lInputLen, vector<char> &pOutputStr){vector<char> pStrIn = pInputStr;long length = lInputLen;int a[128] = {0};if(pInputStr.empty()|| lInputLen < 0)return;for(int i=0;i<length;i++){if(a[pStrIn[i]] == 0){ pOutputStr.push_back(pStrIn[i]);}a[pStrIn[i]]++;}pOutputStr.push_back('\0');}在C++中string封装了字符串的操作,总结一下,把string转化为字符数组或指针有一下三种方式:
(1)c_str()
string str="hi,girls!";
(2)data()
string str="hello";
char *p=str.data();
(3)copy(p,len,start)
string str="howareyou";
char pStr[40];
str.copy(pStr,7,0); //7代表复制几个字符,0代表复制的位置
*(pStr+7)='\0'; //这里要手动加上结束符
0 0
- C++输入不定长字符串方法
- 不定长字符串输入处理小技巧
- 不定长字符串输入处理小技巧
- 读取不定长字符串
- 不定长数组的输入问题C/C++实现
- [新手编程训练项目]002——C语言文本合并02:不定长字符串输入函数
- getchar()输入不定长数组,getline输入字符串,int和string的相互转换
- C实现不定长数组
- java不定长参数方法
- 输入不定长数组,以逗号隔开
- console 接受不定长的用户输入
- 【学习笔记】不定长数组输入
- c语言的不定长数组
- C 不定长参数使用例
- C语言不定长数组及初始化
- C语言不定长消息-柔性数组
- C++输入不定长度的字符串
- 输入不定长正整数,任意组合,输出最大值。
- uva537 Artificial Intelligence?(字符串转化为浮点数)
- DFA算法过滤敏感词整理
- 蓝桥杯 画表格
- 6.4 Nagle算法与CORK算法
- 分治法,divide and conqure
- C++输入不定长字符串方法
- ACE6.3编译
- Qt下载地址
- JavaScript中的cookie
- nginx介绍
- 历届试题 买不到的数目(欧几里得 蓝桥杯)
- PowerDesigner概念模型的Notation设置
- codeforces 5C Longest Regular Bracket Sequence
- mini2440-----keil for ARM之中断一