C++输入不定长字符串方法
2015-04-04 15:26
501 查看
在很多时候,我们对需要输入的字符串的长度并不可知,一般情况下,我们都通过设定一个范围来解决。下面我总结了一下如何输入字符串而不需要限定长度的一种方法及其代码实现举例。
由于我们不知道输入的大小,所以我们采用C++中string + vector<char>的方法来实现,我们先来看下面的例子:
通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。
比如字符串“abacacde”过滤结果为“abcde”。
【输入】 pInputStr: 输入字符串
lInputLen: 输入字符串长度
【输出】 pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长;
示例
输入:“deefd” 输出:“def”
输入:“afafafaf” 输出:“af”
输入:“pppppppp” 输出:“p”
下面是我写的代码:
(1)c_str()
string str="hi,girls!";
char *p=str.c_str();
(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'; //这里要手动加上结束符
由于我们不知道输入的大小,所以我们采用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!";
char *p=str.c_str();
(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'; //这里要手动加上结束符
相关文章推荐
- C++输入一个字符串,把其中的字符按照逆序输出的两种方法
- C++里面用cin输入字符串的结束方法
- C++输入一个字符串,把其中的字符按照逆序输出的两种方法
- C++中输入字符串的几种方法
- C++输入一个字符串,把其中的字符按照逆序输出的两种方法
- C++中的几种字符串输入输出方法
- C++输入不定长度的字符串
- C++不定长字符串比较合理且简单的解决方法
- C++输入一个字符串,把其中的字符按照逆序输出的两种方法
- C++中一种输入字符串的方法
- C++中输入字符串的几种方法
- c++输入字符串的多种方法总结
- C/C++字符串输入方法比较(带回车不带回车输入)
- C++输入一个字符串,把其中的字符按照逆序输出的两种方法解析
- C++不定长字符串比较合理且简单的解决方法
- C++中输入字符串的几种方法
- [转]关于在C++中输入带空格的字符串的方法
- C++中在输入密码的时候显示星号的方法
- 浮点性(float)转化为字符串类型 自定义实现和深入探讨C++内部实现方法
- C++中输入字符串能连通空格符一起输入